Sat May 22 23:23:44 Paris, Madrid 2010  freestorm77@gmail.com
  * setuptools-0.6.14devdev.egg.darcspatch.txt

New patches:

[setuptools-0.6.14devdev.egg.darcspatch.txt
freestorm77@gmail.com**20100522212344
 Ignore-this: 9c657b5380bce486773abca4b4f026fb
] {
binary ./misc/dependencies/setuptools-0.6c12dev.egg
oldhex
*504b03040a00000000004841453a000000000000000000000000090015004547472d494e464f2f
*555409000357018b490b038b4955780400e903e903504b03041400020008009240453a449e1f3e
*1b0c00000c230000110015004547472d494e464f2f504b472d494e464f555409000304008b49df
*028b4955780400e903e903a55a6d6fdc3612feee5fc1ba051a1bfbd2a677056e8100e73849eb36
*b1f7b26e73571c90e54a5c2dcf922890d46ef4e57efb3d435212e5951da76720b02c91c3799f67
*8679272c4fb9e5d3df853652950bf6fdecbb936b5e880533c2d695552a3727ddd7ef663f26df3f
*4fc5fe64551705d7cd82bd528732573c9db04d2d73fc92a5b13ccf27acae32cd533161bc4c595d
*86f76cd9d89d2a59c5933b9e09c3a65326b89179f3d5c9cfaa10d30a6f176c676db598cfaba692
*b3caed98299db9bfe7116717353ee9055bee649ecb8afd3263af374d783d150597f982a5d2d8da
*cadc4c8dccfede533b792b13511a9cb65cbd614ab33f966f4f5e099368595927ef8bc77f4e58f8
*b9f2b2c93273c2fe66e869d5b3d9ae7b2abdee613663892aad28ad592cd8f9f92ddfe482a92dbb
*0c6fcfcf8f37750fd3877eee33ce495cf787ae137a365f40a37bf820cb541d8ea43d5e184e8d5c
*8cd54e65762758a5d55ea62265ebf54c7c12eb75eb5142cfb075cb1a557fbba775622f556df2a6
*a3db2e4c99ca53a1d9defbad2185f5674d5895c3e3044b452eac60c4c97add7f3f9f892c5baf3b
*aa64d1f8fbacb23b70b59539bc77ab55411c69661a6345f1ada1b5d2921f7b07c7d2546a9158a5
*7b4e9f11515e364c41644d5b1ad0e58e70bb5a0a73c6de5cbd5fddce4654e8f4c0b81621ce9cef
*754a69451f4a0efd72cb0edc449a728a8f641d517ba7b08d60a6c68956416946b1f33eaa1de581
*d67bc7dc4b7e4f45a717693a7f2f0a053b2eb502ff8539655bc12dc84fd8cbd76f6edebf6e1968
*1da31407a17ba2fe9411d5dc948968f77ac7960651545464ed8953db01d90206743680c010aef9
*187604e12bcf15e874749d08217badd72b9725c8baa6de74068687be8c9494a6e01ca777dfe92d
*d1e988aed7cb8bdb9f4145947ba9555920a8d99e6b49818e64eacdbce37b517e6ba1752d78dab0
*54953845cd1e89fdf7cb77d397305aca564eeb8f24a13f1ba0068240d5380962dfee48e9495e87
*d03595484294f4de654c5d20685acf8d0cdc934fc596d7b9050d9fa949379f44525baf110a1c68
*b454b6234b47c9ad4c9cca5158b495499df3ce58adab782687e61e50777ed191dd88284c1c69ef
*bfa0b091651cd63078b28374f832af8d9ebbcf0f07ed419a1d11ec628768e72af1ceea3302e2a9
*1ca8c3cb723fd5b92d08a85e690fe61e9f73d6eb6f9023b6f29367926d55ef8bbef099b32ede6b
*fcb34e653e254e37cea106b1c52bf80387f8a92b9c1bf79d767564b72acfd581cc6b842b2e8fb9
*ed659361e984bde309bb59b17f4ed85b59d69f26ec86d4f2c4427a4cf6fb5907549c448eeb0a51
*86fc0fd1480d3ebea3bc19bce7999865b3285efb9898121cfadbb46a9ecffee21574061f7ba5d8
*f5cd2dd3a2048c62d28e48fb7cc6ded7484b967c06218e07a436411eb6131476ce10134627d389
*3bf6d8a1fd013de2f019ae7530698dc8b7518c15dc263bfae3f3e2fa20c46190ce479f235de53c
*699de3e178bae709ad9776be4e6a8f92406021f8211c961cdb0a5dc8126eb56906c4b0ab4cb94e
*7b784750692bb35a07e254a02784ebfcce967cecbe678f442947268ea2342ea30ab9af10871d19
*2d8ad7e3e88ba2cbb957ab819ee74130b58a314e33b9dc684e30c0a93d68c515b08e68c19b36eb
*b2d730439bb851ee0a6c9a42ade0b0f234fb2c359dfa24b05e4f22534fa781992992063ef96315
*5388c73e88e384e074ecfc5cf96c65f0dc510c4c30620281f10622894f9ceaf06271acf647bd9c
*b51cbff8eff1ce7fc15a09d44fe98aa4400c55e00d56ca04428c6d6b68a455420ecd53af422187
*20251e057884eb181826c6424ed058a910a6e6f9faa3330e1c13cd45c8862d6a46c8ba6284d50d
*5b3b85f894d711859e92da58553c60f8f5c7d96817f0f19891be4912fc6e66016649184032dbcc
*f0347f25f697401342cfa3bd039a11839f65ec4f9df6b527398d494e3b929f2d03ec5a5931d689
*3c8a87ad6e9c9f8e862e998ec43e3f0fddcaf9f971128c603a7a87aa52c62300da18386bf738dc
*9bcbbda0481ed4ff330f350b680006bb8b12974387b48f97c342d427ce677de2fd812271908727
*715ae9bffc1567123402572ed79c9f7b5e2161873291b22801eed55d1bca082e1f9b1dc510a313
*a0cc76511ffdc475ab03a0811da1c1a2b2c37a638e3bdf31bd877cbc55350171022f978b7fffdb
*bf7d0e39c7b2445eb2a961f3a4c9520dadcf9379bb7e1e1a7b689175caeaf691fc2f668b6fe8f7
*e3a9a6dba28b113ac70f2dae1801d8c78b2f86de98b67b5dfeda8848170169ff07e1097cb743b9
*6134190925f5bea32e7dc901704fc527e4106081442b8f2d6939dcb5611b6529bee1e68e38adc7
*67d706d10ba4e93bf340f6791237432e9e3cc319e93ea873922eff04fe97cdf2aad7d62420e3bd
*c855e53ba63e8463841675f1080cbe47c676e1e5ba7697df03e7abdfaf51bbca74a3a0bdd06494
*d391134c505f1f7f701f863a5d263b5406ca3ffd31c81e07e0b90774da6fec5465f6e540535ee3
*661e589bfbe5c2cc87ee3bff1a7efb227a07c6bffb71fcd463819f7c3aca5c79171d3d76ec170c
*a1eee7f2fb53336785b1d2f5648addc3cf0e5d6be1605b1b00bd9d7c3d25b7aa69eee21ee9700f
*edb4f08dae19344be89074e932e246014caca2f15250f1eb2c0b74222146521ad233f5a5718107
*92d188b3ac469fed2800fb40041a6cb420e4fef628abbcf26eeb48fc44248e575777d9c75eae0b
*045777c270711bd297c8f2a8da1b99a3e0bbba0ca8c29e11a3d382cb12600818fdecfe39578408
*4a9eb395c34854f9fa568314149dd63dfca31626c0290fcf6cd0e3a6cec067a5349a03b353759e
*52cef41d6e5fa1d783796f0495a56b320800ba0c79d5cf56d8414b6b511a9fa14cdd95ea002ecf
*dc7c2ef28854253531e3c04b8f9babbcce08e0b84e63c4638643146491aebdce814e6be3cf735e
*14434f979f681866949f21f52e4012b405a3ae524087f48114f388f59e8ee70211b76b40fd4906
*fe02dc98658021684d8f4f79ccb99f7ec048cd690f78241ebe405177d9fb96c6d1095f14deff3f
*b41fc4c0c0f73bdaf47290ef25b44a2fe783cdf3cf5f30f4b05d0bd46df3e0f7283d904e105999
*24e749050e2a3b90d8b797ce1f9c8afcfb819db0802c75e0266a39a789161411d4f4b7b742aff1
*4c345eaa0dbb029c4714289ad4e24f37c796847729b4853f672bb5b1f727cd1e5bdc6320f4c875
*55e5326ca6a9152307e5d6cdbcfccc3010897be32822799e41177657ccc6547585507f291307d9
*63560b4a502843e8354f9dd4147d200cadd96e9a4e80a587f6d1a4661206078e4908804dbeb10d
*28cb8d8724672b272bbe64ce57fb6153bd69354339d9487f65418995d348b24ddded68e083d84c
*57573f857af961f5d3553f1726f58591502aaa5c350e7279db94a64282f7ba45979e08741b30c5
*295600d356e851ac3925202aa8de0e6e6db063070c96a151000f3cbf3304ad97cd25cd2df15de4
*260c715cb348dee6dfa775420d598cf3ba000c02d069def8fdc5d098f17e91057b53e796fa6b05
*96e5a6766e260b1ffa624be62206dcfd29e32838857360a45bebe0265d07a8da4463f48a709977
*c8e1f06dc41f51b63ca536bae2d950d446868b8f8386356057325b68d546e51adeb812bcf63d02
*9c4a560869eeae601d3b1d3ed0f72fe2627f7241474d4668b7e93e21159cb6c0ffe1f75093436b
*e8ae392c4f49ca69330c122951c4002dd4a0d8b7da523d2ad00a19886e1168ec4777082dd2ef43
*2ecce707376a6e6ebb45d3d60d28d94d25fa38f7d1c32e7a2e0c9a6dacf72882ec1eee53e8eac2
*f347aea8b9e90a6a305c9f6577d05b0e6d2eafdec5f2cd06add3c4e7879bd5c51b9a956eb764d4
*67ed0cf09d8c2612a7970ae7bf442a3965b7bcc9953e1b3aeb4e48ddbb2c3813c6101554b01226
*aa64668eb8a4691c7435122713262820379454845fe0d4789ae0eb29a478760b09efb02eab1bf3
*d5d94801fa553407a553a08bcbe5c575680fbb99aa2319a6b0a405fc22fb9d2c736ec95316ecb7
*eb5faf6f3e5c9f5ce6dc18585de8458b2c5cea59c1d880668b05fb814dd1b5573b3e584bb0c7d9
*fc0209d415eec5a2872666b036fc2f035a71b3ba225780c1b1157fb7cd98dada03b527bd67b4bb
*9e4ae90f9ccb96f506be30baf5a62b48fe3ad0d3709d7a4592403bf1f270295bd086b7bccc6ad2
*64c7f060e9adaa7026be7552c48a5c10d7ed18bb97f89d4aeb5c980708751c5ee86427f7c4046d
*7506a509ed6776850b4f7691827fca124ea3e3bb7eb35481c1dcc9ff00504b0304140002000800
*9240453ab81cc8a746010000c3040000140015004547472d494e464f2f534f55524345532e7478
*74555409000304008b49df028b4955780400e903e9038d94dd4ec3300c85eff72eed9e01c14008
*c1d026aead2cf5b2685912c5ee58797a52f6a391d5859baa3adf712cdb7116b3bb87d759cd079e
*a0a20eac2756ced5b19bc4ad818414daa4917a8190db58ebb539fd9d250ec1d11472ac65804256
*496fec1ea165eb0ad46044df50a95ae242c203a3271b7ca147a5b7ca604edce0a160a47cb30a37
*aa65aca262bdf90d6a34a6b27e1da6ef2f4fd5f3dbe37c102ee71f8bfbd9f2a75d43fc58117add
*81b37e4ba2113da70e62b09e651387080ef7e844c7978d15a9355e97a8c36e976b97e671c6ca59
*45025bf533809c6594a7b81be59f39bfbf99e5c5d35ad7409eec288f9d809bbe2f210ab4bcca43
*1663a0efa180c7834f14fe7748be0bab3f1ca4938d2ccd23a1c90dc524e1c08a5180a4f618e4a3
*6960dd2e0cf30d9420a318d746175453c0de2f3e1247d87fe1b4d3432b7de5ba7e97be01504b03
*040a00020000009240453a305c01912600000026000000160015004547472d494e464f2f746f70
*5f6c6576656c2e747874555409000304008b49df028b4955780400e903e903656173795f696e73
*74616c6c0a706b675f7265736f75726365730a7365747570746f6f6c730a504b03041400020008
*009240453a57cacfec640200009e090000190015004547472d494e464f2f656e7472795f706f69
*6e74732e747874555409000304008b49df028b4955780400e903e9039556c1cedb200cbef314ff
*0bfc3d4cda0569d74dd3a46df7aa420e713b54020c48baeee9e75092265d48d30b71e2ef03db7c
*86ec6b15621b950e3b699b064c1d0eacea3f0aef9ab74f6f0163eba2b577c06e74f3d162de4688
*b88cbff9f8edc16aec505bb70ccd4e9e9f8c20d6c565eccdc76f0f56b54ad7c25d0b21672f1f0c
*16a043e285c2dcd9cb0783e1e9249439da65fce0e583c13c9ea836e80b25c95e3e184c9910416b
*b1bece238a3f7e60a01514924a2e9e468610ae22930b294d107cfa32861aa457c50a3e80f8c37b
*d6d84599deb1a6b30ce1b3b74ca7acd7a8e4e6a3c556b31d121d728c588aaaf7f07e18eba055b5
*5e0302f0899db58a7fe29a58c9cd478b853e8d82567b174f2363fb4108bb8b57a42beae61a1d9a
*1a8dbcd2e2e61c76b1b4f0a82adba14f7c01fe4452fedd2a8f5b88375226346868a37f7efbf2fe
*f5fbe71f9b98ee9c658c70424f1305db7a89afc74c6782d0fd21b2396862248230d06060697420
*292690678ae6f518287d7f15ce2a2ac3e6307a92a2f56fbbb68907de880c17b60a56231db36c2f
*ade9eda1e30eaff67c03cacc38ef1f761fb7f2d87e023b2a0ae3a84884bd1e436784ecc29a9829
*9d23b49aae16ec64f49aa6bbdf538925ce78bd585f2fe87b3e719a0f42401f45a0d29a13a1a853
*a69bb3c090bf509ec514c4a80d3d8441dc654e82b1ac1a51438422760a1a8f93a1dd8aac597b29
*23755ba378b25eae40455f28914d948510ff6f8a22cf04970e51115a15cbd5ba431e5b7edb36fe
*554e0438e29394d332da42fd78214f42518db33e42a531c19feff46c1f6682cf5b09515973e87f
*1d02ca364dbda17f28e048298263ec1f504b03040a00020000009240453a9306d7320100000001
*0000001d0015004547472d494e464f2f646570656e64656e63795f6c696e6b732e747874555409
*000304008b49df028b4955780400e903e9030a504b03040a00020000009240453a9306d7320100
*000001000000110015004547472d494e464f2f7a69702d73616665555409000304008b49df028b
*4955780400e903e9030a504b03041400020008000f42453a631429f1fc1400003b4800000b0015
*005f706b677574696c2e70795554090003ce028b49df028b4955780400e903e903d53cfd6fe4b6
*b1bfebafe0ed2158e9b227e4d2f743e162f19a5e7c855f9bbb83e3a0095c63c195b85ec65a699f
*a8b56f53f47f7ff34152a4a4b57d7969811a896f572287c3f99ee1d0b3d9ec874e57bad3ca88ae
*11e6b0df376d27f6b2b893b7cae4b3d92c495e8af71faececfc4d5561bb16bca43a5c4ee603ad1
*aa9dd4b5289add5e767a0d8f1f74b7151f8fddb6a9c5d7f9ef16421aa13b01f3cc56b6aa0458eb
*a330aa3becbba6a98cd834ad28b5e95abd3e741a660d20085997e2b0cf9344ef08b5c6b84fe6e8
*3fc23ffdfb1c90d9269bb6d989eeb8878dd937df11e657f02849562b5955ab95588aeb44c0cffc
*56752b1ea7daf942cc35fceb1f187c8223aa4696fc7ea3ebd27f65100fb2ba5b39ca79184c2fe3
*065decf617c132f0f9af1e66ab64b92a9a52e117f5a953b004ee05e6de2449a936c28f4881624a
*eeb23382fa9259b355d55eb548ec5aa952950278d3b4009ca8dc6d95f878fe51fceeabaf85da1d
*2a49e4ee1a0ba168da56155d75145b2039b012b9aa2b80b281df86465942ee640bdcac127ab693
*b7ba003a3242396298fe57c6c337f6ed8b254ecd9182f420b578e34f0bb2d0d6e27d532b061803
*02ccbebfd37bd1e99d329d043e07932c2239f2c15124614a1958b052b7aa562dacb739d4855d13
*24fa3b79a784142073f75a5630b4beadd46b90422076b1157692c0494823d4015ef41605f5089b
*fdc73fe9092ef4d0ca3d503d7d25db5bb310af5edd3d04bb6bd6301adf5c7f75e31f028c7e04fe
*14a0084b189baf5645258d59adfc6bf5a950fb4e7cd3b186a8f3b66ddaa9d928ea69b3ce4eafb2
*6b1b1807a36119f8fc798b8ca0f1ca802c424ce1ff056ce06790a06c3c0e7ff63074f46284d2f5
*9bb39b6894450db57602ab1e06afbd205126dbb40616d7e21cb5c80013df12aaa006a6d929b073
*c06771967a60a420a82f002d5e0284985e38ee8f11b0c2e8065c77379130f454ae8c8a67db9928
*68e329d15a56ca804cb5dc29325c38cb7f4f025aa59e588b014b03d6203b58f1035b5b36cad4f3
*4e806d6c1ebcfc93670072b60ad72a132ffabc63907d90bd050d5fa21a07ab00f1f0319a247c33
*b9fb4aeed6a5149bb321bc2cb0118eb4c7fd8ddd7a32414446ada755a98b2ea4157f1f0e6a8a68
*0c7e8d8638b4608cfb181a213bccda9dc809a468bd89260bb16fd5467f5acec1b6c377e446482c
*b0313f69559546a4ec30ac6f5908a4f90208b8bfbbcd484c8139d6091b40a138b446dfabea4860
*808fb8242c013381f8f8c5117f413365512863c8575b2039536d4e9e06dc7473a84a64b702470c
*9bc6a9a8375254b075d130509289aa69ee1025f60316255d7b80b4e339ae2fd1aa8399c559cda1
*db1f3a44153d12b8e99aa0aa7b05a6d54617b869b7211e6f81be6f3a05f36407bf00ae13515679
*eb9e709baf1c0b5e891482177c1662f92273ebdf02f11cd1bcbb042c994e3464454ed80a85740a
*85833008005bb21e50d2f2d7eedce3f8b0d5e45d3a3099800f78568a7590bea0fb879d0242a4b0
*2001410a20591001bb170be00142aab54262daf0a4cc90d5b23e5a03006b31ed0a140e9c051405
*edb1f47754726073212e36a26e9c58f6086b36d81814565a950bc1910b9912d8590b31823cdc6e
*3b8ad1f46dddb43888d743263428408165225b82d3f66db397b7b2c3e1a04d3b5d433082d8c166
*8d926db1b5a43cff24d18d9bb3c446292483a106ecd97a1560eb9965acba911666a3d93dcf90c6
*0585891313f945ee046021fc03b6ba5fcef379e6f4b7b78b46a93a050bb65bfee39fb131dc938b
*99348357ed41f9e7bb6bb273f42c71fec945a3914d4080619c99b228b3ee058b1fd1ba4c834842
*0ce9c9335cffca06c7ab558aa0b229a71d88cb1800ace5040e03d6a69bf0103e8ae281a7573a77
*f2f5af5a67da7f7b164a6d54f2f45832c74b3401684652486072cbb66b5cf206c27e276be026c8
*3da0e9bdbe4946a05e82b34657ddb5120ca751d6d4776a071aafe6f78aa4100c05488e3a85c8f5
*9e048ba492e76f88422cc0d9c4b22487b008ce18bb3a162bd40aefe44e4483561c0192f59b2319
*1ebacd5fe7284345b7669e6de329ffd835fbd715f8a2dec2c03c64140efd4f719591451a6c33b0
*472ebb054988d3dd94853f16e270f84eeed330635ed012d6ce126fc1bbf9348984860c95037116
*05de53e6cc0df532a1278c9add1ef94a945b986c171f4b9d7dc18a06b8bd494ec8e4c036262fff
*18e592bdb48e51eca931905aab575b6948f1fb81718d609c165fdf84a1a69b97c7dac264499249
*ac30358f72e1c95198367336171428bcc6b9b2817bc1111806bec6a60f732366345f17b33e0ebb
*6d5ad08c1d8b4500382d754b36162381f2006e1bc4de2da2a345381cc0ea147c630fabb14ed1b4
*c73c86c9e6f2d90039c702b58220a9c5d0cb293970af3a188aa71c096922062ea082bf288c12c5
*faa0abeeb5d7e03e2e0d50a27c8a186fd7a88ebec2c611dcc1809eac8fb0a22c1406804e93c935
*809b58b1d9198518e07e6b8dced7a86ac3da37ccbdf04d6e0d3d55c4fc64aa5df1deecfccda1aa
*58eaa720bda4ed9d815fb1519eb3803e6c35ba2e942df435356c933676afa5f09be8f13aac4961
*977ed5dc407cd9a5b37c965dbf7e731386236ef08b7e34459bfde61e4b2da9a814427b7c962556
*346becc89defb485462c5455f821f5d0b3474a3d584c5bd06fa6b7eab07886d5b1882bbc6d6756
*9f1b574d6ddb3ef385c6b4e7f5042e592f25918db16236306ba7c88a0a8262ef48a40d286d409f
*29ac936460a97bff11941e756df6a0fdfd60873d15d04c8e8e375e6b3c32370029cd50ae6da9d3
*0531365c120686bda66287330149e4b03635ba1a0f7050666b4a2bdf1659ac7b32187c9e6eea6c
*e8c0ec94e572eef47a8e2474901e736b05c404ba7669c240461dfd7f6e74dd9304583e44815cef
*52bc9320edc9c8bd02271d2aa87b315789c8f41cc23ee785371381784f974d3d1957325503264e
*c8cad8883c8fc8639312127b7a8d9032517636fc598309b8fb8c74c1f18c6d2b92cc27e3c909d1
*1812d83e3e1de6d8018f453aaccde24b07ac0f797c24c026631407f0e3cf8d029c13631294c83c
*d31cda42399b7bcabb3d6eb1061e0f5fa28cc13fe3174e00edc7c100e7607a5f130f605b0dbf7b
*4c31f99876a543bc56ad6af690563d56a06f4aeb0b42b0fdeefd3616f18e161ebdd0dad590ce1c
*47b1b29f38161dff2a2faac6a800d32000e0acd3a80e98c499d76a0566b390e0f1f1fd83ac3b0a
*ab6c7a62739f001404103b59fd41e85ce55cc583ff7ec6fa9d74b5543207a60399976dd99f3a15
*5b0d21ec71e8da60a59e21989594b293416034e0869d45cc70af1762d6ae67191f3a053ed0310d
*814df83c92351f8ef4a42b477c5d61e10805de32eafaeb9b094da751cb254ac0c79f56df7ff8e1
*f2edf9237c420befb00b8461defe301f5449aa003e9a8fd42ef1f6c3771f2ffe7afeed82a4eeed
*eafcc7abf3f7df5f7c789ffd9a65d7f39074605ba84c765a2fe874c0eadc6440166864a4a149b4
*313feac560d820ccc0224d183ba5336bc736ec6b515cbfc0da6ccdb91a8506b393569f7f667ee2
*4c7c21d268fd60d3d9f8b8c26ea58fb78c2ba69ca6d890203d91fde0e14281c459c9facb9f57df
*5e5c9ebfbdfa70f953ac387cb21c2d3ecc053e0703a72664ec2719fc5b6b867327040c77c44f26
*708ba4da7a237be29df2a491919dab4faa784cb33c7e4ead4e28d1d8153c5a6a1da21934013804
*c79026edffd396fed49e4299397b9488bc4332c3aa5258e44fb3dc0bd7b478e2ab58122ddf7e7b
*59b422f26f91c6ff0faf6351265e59e7f42fe6f463d28bb5741bfcab4f10a49bd8075c9f41f67e
*2260df4c7a0d9a31e5b1a669b13945035ae1b714e698fc53e26c25745aa0f9651278c308c2209c
*e853745fcc8aa89445b5813e6dc9629d71c37f43ad7942239c529d742f93e5899324f51bc86207
*1fac11062fac771cba7c462c1362314a04a26ea4c4aba80d417fd17bfec4656dec30f38f4663b0
*2520aaa5f837cf2818db42279d232c7b98390259f90ae8aa8098585dfbb2305636f5bdbac9efd4
*d10454b4906ce1c33f5ed90c70d91796f949df2502e481d7f03b5db932f3e79469c6e9bd45e56c
*aac8b0a97308fadbcee0b9b85ff0b9358f4d4da5856bc4f9ecc6d614c15c19b5cf466935ee6853
*67cbe5d714bfc3b43737e1e25ec9f2fd719e4d5a4298f3d5cd93c70e614e4e33a633f23e2ba741
*8be0e8778cf58be59be712e5e96214acf69c7ad473177cb264418fdde7e71edafcaa6a4650cd9a
*3cf3f08d3d69a0b38b13ba0a2274aafa4a9d6d7c8a199e895172b9c223cefee8f25275ad56f76a
*ea74c2f568f61d29f67c14e75e6d95b54daa3fc5c728862c00757abaf38b7e9ff4ce9d3fe98e3a
*476af5501d45017eb4e3a307c94b6d2149b7671917d475d22a3e2f0f7a06fafc5cb6cd01d888e8
*aea5d18508cca2cfd371bec339e70e55379f5a54eff1436d14b6b0c007db898a30fd066907828e
*76704e301af826cb2cefa96387e271b66ce998547719f585ace165a5b0fb1870ab0f182c51c38c
*3d59333806867bfa21290ca3880d25b23de651ed2a0adc3caacb530cb8f672701376e9fd451d07
*157c3a8a7708441c258c9ed1941120e3e70562983c5db87c4ee746d4c939ae72064844071127c8
*03f6b903d59187aaeb515d7828993fc40ea53e8edd47b408500883aa094a3cb5dfa9cd0c0e63c3
*0686fe04dd475fb3d9a07361a4f966a0fae1c1be53481fb4a1d5951afba804b55984ea02faa5ab
*0ae5dd0174556567af61261e3bf6050a6ad17ac0c2087c38faf9316ad16124f74ff487a568ce4f
*577fbd31a0ee3a2a18538b1d359d797d0f8f5a58cffb8af88267b91e386d7cdb1bde2d90c2e892
*f7a7361bf06fa4f8f57d73c7fd64418fa03fa9ad3d0776aad8ca5a9b9d11a9ca6f7342e66f106b
*370fc6379d66fe94d6f5e69dac4cfa9e406a99a76d544045ec6e039b5f3505f5dcb3f2501f1c58
*2a4df6c81e0b6343dcfac067cdf6a0ba14dfbcbb3abfec7b5060075840ad8e0b473f13c08ea7fe
*e9fcdd87cbf3f068bb05b35b53b39d7bc8c4abd131198e69cd5602056c43deced2ed1d8994a66e
*16aef64a71afb993b4d440fb56d11930dadbadbcd790012dac1fc1e64c82813dd98ecd64ec98a7
*24d8c465ec7fe91b54f1fc780d121aa34a4750b56f8eac037e52751206638352cfdb5c5cd48c7a
*218df2540b2e4190d813e3a8cf06e80b1a8f6d55f0d2353492afc3437f5d477721dc3203200019
*e369abc0d4966511de34d85d4dd4a5db29d64549125f2768806ca90db8e9bdac8bd8dd84a98d4f
*7e1ecd85e28a5fe8ca82ea6914fde6512bcab8707aa92a96e9c05671a78317e499bf038231a0ee
*2b9e615fc19f151f1604b6c90a051893a8ef961c0f1dc501383ed01cb40f20d25c81883a2e618e
*8d328376bbd8c807bd8cd83c963ca35d0fc63dd2ad37768c61ffa6c7c599d4189bb85373884ca4
*0a61375e0c888144e168eff82c4fdc59ed882f3c39f49c591fdef2a18f6bbe6bda5550a206b142
*8ef6c1ed8c47cfecf58ca0d2ee668621e78469181b04d679b48051d0e9d4f04494daaa4adde3d1
*940b0ec9dcc4474a51b82a2ee9a3ed67d0117ef68480fc2c2ed0f3b6ccc3ed0cdd1a9df45658c2
*3afa09986f9809f9273829f77567a1d78bdbd4f14ed41a12ea6dd428eec4d287c761ab3c986e33
*eaf7633f8ed67d7b3078444eec8205a825db55482abdd39df533e01ec10512c6600bd066bec604
*536f201ba00f9e418173c27b376cc4cda4afcd87d6291696935a3c18b60c475dc72f6f7c3c6930
*8b00f3aa06c2bc086e0a66c335b0f9311660f79e453db0173c8eac843b29757622b45076dec9e6
*64774d86864d55f1789dc155a0d8fa0c0747c8bb13a9fe466350094c7cc3d8f09557f977e8f31e
*d7f9f8b46b329e2d9bcef079adbfbff5a4676071f9959a3aa116e35ac17354635a2db834f079aa
*f13cb518fa9213994720ba5e347d9d2f2c284f1e967c9e5426e3da29ca4d708735e80fef25876e
*e7957dac0fac0ddaac2f6a7c0b1614834d0e3ca94f721045f1e9621d4109aa776741eb1606b7e0
*b90f9df60c0850eceba256bcb0d923d8417f0dc4a95a16d8570aff64593ac9184bab6b4877e55b
*4db74fa29e561df79b5b0f2237dcbdaa822b3b57b671026803fc4bfa9b0ed48141c4f2d7aafb00
*9dfd1f85a2d2de7b0516deea4256b694c50e04e41082e34eef29b8f7b8f97016b662b8b18333c4
*5739c6599cf5ac41686b52d8078afe5f819bed6c0b6fd0aeee7a47dd5e364a82f810a30de85325
*c9bf01602003034e8d0285036907ae668bb096c2b943e7ef2f5a257b8df13e68670d9329ba25a4
*f0ced59cb93f67c5fa26c09f04ad0503847407e385f2762fab833a139262071222d84e4119a66b
*e92f0f1083822a2bc3d7087c3e456687a433580373341015e584257101dec2da8f0aef9e019380
*8274b38092739c45c76eac0048134a7580822992d00531d2d132cfa2e84ad77899c0f56972db19
*1d30a4d2b07d539421b1c5a64ee750284c661b7c7d1d124c27045db7142e5d4d2de06e3b80e553
*e51ff03e2eeb13cc2d9afda04068b324dc25b510630c8743395f6bac3780599209002f7b79c46d
*1b73406de12e6fa7417ca342fdef01b3d33c48c5fc08df588e2b2355d243adc9a800197eff7a8d
*6544be9281d8821ab9db19c40b67e9430d4640f63a1cacf88385a62757e65c9a8599efd501cf6b
*2e39005bfaf6d69d3cdabc3bbef90888708226ebf8aa1d448f3509bfbd6618756d662e4b6fb3f1
*75114a0cfae88805132525ea0927ad2de80acc967825a88442e8bbb62e7bcf917406e06920830c
*40d876fadeaab12bb7a60e90f612e6ab4728a0f9f0b8ae6f6fdfdb3027ea7c7d35c812f18f0a5c
*2a882c807d1d9a47899cb519adf7042fc5ffd0a5d29a95022082f01ab5c7362380c295a07e397e
*c90b0ed7ebc7ae3887e5795f0640bf14337865e35ef45d7bfc3b0333e7c866a3c147cbafa0c3ff
*faec06ff5c025a3ae6b96485b1850727af01b9f8af6fb461b1396acf1a48020c5d60c15fb13e64
*d37ddef0ffe0c4cc1f1505edbbb8ec804f047e1f87222fc58f3ffe68fff20868006cc0ba596f71
*bdadc5f840d285da6036f2ee359e1b80f4117f7bbbd917b191c6aeb32d6a992634178e21d9e066
*026ec126d1b470dc1c8d005307391bdf21c8d9c0d945863bbe30b6da86c9abc64bb6f0951d0e2e
*ed3bd62b7da7c42fcd5e21b8ff0e805c74817f96ec77389c98b9e1b997385b5d99a20111c0cb6e
*4482c15e2d80ec190715be1bc4cd993c84f860ff88c1cedc4eb46980bc9a0e82cf367f68c1b6a6
*b3b7127d3f82155f9833f8ffeff54c7cf144ff1e66d916095a28cb9e718f13494a9615cb27d367
*bef47a49ffe42daacb3e9dffbd9e9fec4a4739a2391674548e7b39cf4eb7a88f94eb94a0215834
*7ddf520b2f8530b413b20be81e5f24a77b6a92a1b9fd3f504b0304140002000800455459395c4f
*ba45690000007e0000000f001500656173795f696e7374616c6c2e70795554090003824a0349df
*028b4955780400e903e9032dcc310e83400c44d17e4f61b981341c2012658ab45c606491455969
*6d23d614b93d1031d534ef33f3b41bc537d34bdaef6d2da4569a5d55ecc3cc2995850013cd008d
*2375804a31a07b263ab76caed472ec6bb8d736dc74c8670ee5ee155d7d0bbae01f5da77fa40350
*4b03041400020008006caa373afeac9b3a565800006141010010001500706b675f7265736f7572
*6365732e70795554090003cc967a49df028b4955780400e903e903cd7d7b9fdbc691e0fffc1430
*755a121286b2ec64938c437b1569ece8d67afc24398f1dcf91181233830c09300039233ac97df6
*ab577757371a9c9193bddf7ab3f610685457775757d7abab86c3e1db7c719d5f164953b4f5ae59
*14c9b3b72f0747917f068367ae51d92679b2aa2fcb45be4a2eca55912cea6a9b9755b14c6ecbed
*5559c1fb0d83ce92ba71ad07edee7c5936c5625b37fb647b5534457d3149920f5785f9c0c32529
*3e6ea071eb1e56f9ba6807db3ab9ca6f0a845036f0e5f60afed540bbb680ffe65b412499cf9fcc
*e759f2a8aab78f92db2b78715334f8152084e8d097f20de059b680cb8b3a81e6c9ae2d92ba9d50
*8b7a534083b2aeda047a5ee755b9d9ad0098456b406825e745595d02266d0b089415b4c5ae601c
*93c1a07788309bcba22d2f71f6e08bdbbab966e4abba59cb04b7fb765baccdf76d3698149797fc
*264bf26a99ec2a7c0710dc0b18cacb6db2c8613156adc0a5955995eb926628df534783c94fe586
*bf2158d4f962d76eeb75f2f6e46df2e5e75fc074e5cba281e1c31c26ed6eb3a99b2d0d6e3ebf2c
*b6b365becdc7e97c3e5817dbab7a39190c87c3c1a05c5333401ea800fe1fbae14759b22dd7401a
*0dfc3f3cc992aab8cd92cdf5e56e5bae92e441f2a73ffd6930d836fbe34102ff5c34f54f45d516
*db41f171516cb6c96b98ed93a6a91bfb7e0dab08cb2f3dbe5caf77dbfc7c55bc2fb649de2a0083
*0730239bedae21da812586193fdfe38a252d8cfdbcfe082b382080b505b733d8e22a6730d7abb2
*bace92f5359072d81648a5c22eeb76867f9ad74c47d2a66ce1c32c6937ab12305a1617c98c7198
*019280dacc6e9131f7b8ae97c5f4f35ffdea57290ff841f29e913de2ef90ea80b05ba0d0a4be48
*3a5052fa0a7e33385c6afc2b99320ed40bb7292f4c332205db127fe0ae20d4c7d244b0c17f7a07
*609ada96346b638b0b0e2d1d987f702e909e84c28ae56c03fbec0236c2583a03c27a57c0fa55b0
*7eb073cceb510bdbf263b9dead8117ad61b24b587d3327b0fb78fced1609ac9de0bf27d88f832e
*bb6db58765c6ae5ba2ee7559114c01446060825fe58be4cdfbe44fbc1d6eebdd6a097b1fbefceb
*0e064edbf811f08f47c0beb63023c438364dbddc2de0e5f93ec026497eb7db12774a6e0bd89515
*fe002a5a5c158b6b5c5a33a212d66a8ffc02e05f57f52da248b0d4da07a8c1ca01a93f6a765505
*901e21abad811face0e35d8bac083e315c853e2178c07557e5a2dcd26cd098806dc01e05de19e9
*2ac36ed6c02f98d178982d760d6c9badfe0ce7f5cd7b59939717bc8e70802ccb2db558c037b065
*f1d8a8f6498d87845d66e64db90507fcacdcb604c93669b70d0c15d80d01bed8550b82db5e9965
*a24559c24ae48b45dd2ca1f16a3f31c46561c1e6400a39df952b4d855f256b78b3ce1775fb0746
*e23df53759e7dbc5d5181bda9db4c6b5c25df3baae780b012b9c5844a7d364b8cc9bdbb21aba8d
*64999ef947701951971f8f1eb6f0bf51f230198f26a3c95feab21acff8d50c27659c9e1e7f7196
*c2be9a5c36f56e33fe32755b4fb8e71ff2d54eb34fdb137241e22e88b3595d6ad2f096435c06d1
*7f663320aad90c103d150ef5bbbc2d17eea483b92e5a3e5f90f29bf27c87cbf204880324810d8c
*638b2f16358c8237c848486f94c19fbb6ad62e9a72b3c55fb4739bfaa68423097ef3030d759431
*043cb566d4c38c7a301ff3a375bef11f94d5458d4fe0746cf467ad81674633631a23ccd4a3225f
*7b8f0cf7ec7cbe025c81037a8d8b8ff0b0f51e11b3858f65464faa9bb2a9ab35600662018a5c4d
*bd62c8cb62b1828d3e233104f6334d1a9ef880e50cce3dfc992f97b31cf6c20d4932844351e104
*32888bb25a7a9348b8b438391fb74d4e9b6886a7183e5eac8abcda6d6606553b43b412c545be5b
*6d678b1c389843ff6d53ae73586b380457050d82f625200ee212efe1911a2276f3471ec17b1ec0
*3be9ec555e01bbb288bff0161e9b11d9181827b88e6f79f5ed4cd246c031320884bc2200b42d46
*d948f6f6f3baba004e089f7addbcaeb7dfd6bb6a098f7fa890df5527384706a3133b6102ce4e41
*ded0596d9812ef072626943280bf97662a40266d8b59e30643ebc14f85fdd102e517bcecf6877d
*e956c49e92b874f678b48f09f2be2c80d1816453f0c2a36000a4b310526060d441c1634d46db5a
*93b88c5189abc18842d90041f0a95bfe54086919287ab693e106be289645b5288648f7ed16ce48
*4331df7d377bf1f2fd0704f6bb97af9fbdfbb3fdf9fecd0fef9e9fd89fcf7f7ff2fc3fdffcf0c1
*3e7871f28793efdfbc95dfa6e7e15be12c4394e08be60276539b05542b5277535c229ef4e8c9aa
*aeaf771b14e905b597af8a6d8e92f15bc7ab462f0d15eb87dfc29c99c666aadfc27cb86730d0cb
*4befe77ab3dd6b18053e506c91a1bcdead56ba1540d13f5ff056d58ffeabdcbc0d80f030812722
*8f28846dc923cb7166573023abe02dab0db3ed7e53383ef3111887fbcc481f8615b38c5ca85df3
*a2c0f547a5eec93934becd9b652012d5d5ca9c197050ac41134568cf6ef272855ac00b9fab0dce
*06c4749260db8f2d5b70b2e6b3f396f672729e83b28042c9b2d8a0f4502df674b8f1f74981005a
*233f90480f7b77d3cc66e3b6585d2849598e527c3a99cd0891d90cfec21999cd1ee347f4c9246f
*2e5b908c19d5801f8d03d415c2a8eec149b4dc1f95b851562b10748cb8b490cf5b96a350124306
*53b45bd7883437ee34c6f20ef4ac60e97304245a96822ef07b055eb3ce7eb01e2758d6455b8db6
*acfc83663b245e945c1439aa7443235e5e9637203fe38c52777657cc603303e7018e0482cadffe
*3178fbe7d9ab67fffbcd3b548440329319383dfef26c60f80a62314dbe1c28de02bfbf1828e602
*bf9f0e3cee024f3e1f68f6020f8e9eb27a13db1b63f5779604d8eeb5e6c3df26f3b0cd9c0d13d7
*85fd9a45e8b9823ce70de53d226d02660c7fa0a5865706a631b7aaff7c0e3ada6e55008dca97b3
*f99c3733f2c0082a641fb282376a1599318ae4c92386f628a9cfff02e740a6e44b3c0ea1bb0e8b
*9ccf692ca4d1082e9eb81e59df5335c83398fd1049a76a9a376386fca601f9a1a36b025e1dac04
*2736492d05319c4375661b0c4119285bda8f7086e99e3225ad74998492e026c87b3d1c555763d8
*22debbf4f4f3b341479d101499d8f9477baa3e3b1b282de13f8b7da023cc8437034fd37d7d2278
*5e18d6aef2adc51bf8b5a32fe0dea832a55af7a0c36706e7df0636c038b2e499804e05622aa615
*ad1db14c3a3d3d93b9867541cec48fdd485111000cd16c83469cf1e8c9ae6d9e9c97d593f69600
*8dd209f2d8713a213989a4a6b19b09a40c7c46fa29c0f2f5aceb629f2537a884411fd88c818c71
*c859f234f51a0386d01e75c5d15bb2206ce528381ef9506985681c937c8347d498ba9820f7dc18
*44c7c3c9304d3bdf9dc360ae9d9ab86a0b1f76939770fa39bd314b867f84cdf8cd67436f85a877
*a43c6fe2f306f462f8fb0a462ad32e1ffc6df4b6be2d9ab7cf47c7a3cd668167363d9881ee89d6
*d3f64a5efc038d3506466660b93d1c2ae977998a44e2c665324f8fda4db1282f4065f574206699
*7ffad39f92e76cc958ed199af0cd968c632d70ad83d625344203c4a464fb4a55144bc0a2866faf
*40a26156fd7d59ed3e124b35aab7cfe5c892e8f7620c8abab3d080e1903014df6784b0463e7c09
*748306759413c6c6f6304a0fd8298c8c31f5779c4f6cb274bcb776c838c7e9e92fce6033419fc0
*1987c910686b36f4bf1272191a13c872f27079f4b01da21504e8646cceedcfd1f0a11f3c8507dd
*4d12a3cb7b1b491ed00cc2caa1490788402c6b681fabab235c399ecd847520b142dd96ab557201
*c258006b7bd5d4bbcbab443c05a23907ca46c748d335c974ed5130c54d31413119748b7163e66e
*fce3f271fae384fe73349e3c4a61aa19e1835f7313efeb008826b5a8e92c11bb7e12c8f0bc8b63
*5ae95878fc32338655b7b19fe728cd2e0b7b081b316439779640589b840410786d40b8d7dff0de
*7e27a2c7b6017e0c6b5b94bec5b1c4cd8dac19f7b074665124eb2a40ce5713c7295ed3eef63514
*b2e586fb9c6d9bbbaafcb887fd5eb4fe7e075ccc981009b221ba23df7b66da4da7e66d4794f880
*c363a22bf21610027dc62858d6664c3c106d4bb9b1c8003c7c7bc0e269d7c620cd9f380410b93b
*6018fcd3c140edb396f74e4ef8899af8cd401d8cc4ab18fa716763318f36c416ae07b17e63f746
*42050daf808745000724afdd665bd7ab36f97cf2ef93e419ece3e0bbfc624b3e453c62c88c899b
*3d0083ce4412158b5b9e858fe2f3a30d3ef177388ce805f3906912d99b9d390bc405f77d574058
*3a2e8d7cd235156bf1d3887040f8baef860fdb89f05e5e69fb6996780fbe88c042f79205354d7e
*45dbc0ebe06be8e1e9e7932f8748d73f7600f8839826bfee85f08be1f120faf9033934812c9073
*b7f146e6ed04ff180f91048bcbcb56b9119a82d71f78f7300e8376b359faeeb227a810801489ea
*16aff36498f543420bc825a82e53630f01107f642cd3e8576ae7c78ed36f7390f384235c5ec266
*41c55ab044f9b5b8cc177b414cefcb9c7da77b27ffacf3bfd4ce33240b42e73caa5fde9695ed6a
*6926f96c9a0464d45d78ffa32fbb1f7d991ef78e10bd130153519e3a607b8cfd6eb344873e100f
*3178c37881c17af89b5de39179f2353d0fa9ff104eb135126e8c47487846384badcfa30d395ed6
*09c6520c2283279b83759f8c51809c218c2ce12733e5c985a3e7fb1ae9cc37e0cced4773367bee
*c8ed96cc1584b98033a757d58a22380351e0a24149ef693ab9985daeea73c08cdbb00fba6a4f47
*c6fe353a93af27e86268447cf45be027f0a7399f4801b618a2e63b51e355286600074e18632244
*19c7b6a3998f5b179d9aa127857aecda09acc3d39b403675b04f33511a3f923aeb2271430102c9
*d0f2c88dd263020b882b18137209303a7d203c238381e1193fbccfd9d1ef83d066386da820cdf0
*036c7336a10e4f2860a7305e8d4ca34af2930604c2beeb58e8161ff09487de3b4624a1fd95253e
*d9cafccf9914b5531198eb9c3e612312d1f29c042942fd251d0684bc59034124bee2930e561a1f
*472bd6c5a8b19e9255a3ab9d161ec6f011a3ca685ba9f36207c207378426f7c3d6478500769044
*0bc53de6165170ce344dd382e8639e7dc2d788cc9f8a25e1e2cfa81707b4b651424af5352e0313
*1ea4d654cc3cdc7666be05855dfea4d71a06da0af9d5c4076d8d2202cc0030d6ec8eb747c40f9c
*ebabbc9dade5f538889c4113775df0b12492e5a8f5d98744d76963a300fb86ecdba61b44f84037
*1f3a9f2bf73ccad98e154541b2733002f8cfe83a3c041a7dcdb81151453e5fe5d535fd055c9698
*2081b547e2f7201191420d07cd16f6e80a7fdc5e955bf617e1094e26ad0d7446045180ac4130d8
*27c7d0049804013e98cf110dda446503b83844165739fa7760e151aea9d7e51698d7c49b033b7e
*0e7eea8eff651b591a984febe9fc2649c6abf21aa3e524146cc2b0d2f93c8df725210291debe97
*c9b41d71eca1d0878bae543d1a609dee7a0f4ae39ef3bb3ef9582c76db428d564e4fe91cc3b656
*65b174df033ee405c89b3d756cff914d131ad5c79d6de4b9b684e9902740ceaed68496801c1ec6
*57b61d5aeec4668cd71c4d90d98f66dd29b7a73b1909bc804ca02f6281ded77327e0cd05fe9c23
*a4ce8bc0c721c10ccc29e3a87264c9a7218ad669747d12b24744099a61fff7620b3bf6d3b0157b
*acf039fc13a9097f62dc031de1ff5a8c91211b88e30318869c39c28acdd73e2bf663780e75e131
*0fc7347f0ef308e38b0e756bb8881f58fd695cc4ff8777b40bd91933c16907f1a25ead38a2845c
*8c188ce4ab1a2ddaebc83e8d1b6b4cf2725baecb55ded021e28f7706e242b915177b46a25159b4
*5ac832d642d80ec0b6c49d86461d3e3accb944bdc9e7c958acb05383476a8418fc875cf3a6e934
*393debbed9cfae8bbd7898bd97e7f426f26291af56e7e40820885ae1345d89b5cfd7291d1e06d7
*81e783626111d6541afa5f7394c152a4d931fd3b1db8e975afdcfceefd897db65c52a83fc63623
*3f041e3c9f9be94183293aedf834df77171aa39fed3e9e7703d018a58c3459203a9c835dcbe1b5
*d838f0d418488b1a34b0765373c76259b72bbc6729810c1878e2c320e1bc87fee925f66101e5ab
*db1cd691bd69dcad3fb802a30c50ddda92cb9bc32ee05c2a5ad4cb2c9cf107638c2c16399a83e6
*73b35c30a845ee0b78645161efe0ba26534bee3c0035e86376001e3626f4c183ed36a33114f098
*9cb3034dd7de379354af6f1f714f600bc936914502ba4da39bc4782385bc347992220ac3ee5d79
*b28ba471aa158d451a328d0c346f90496d0d7f500abb1188c5e42f3aa1d886226c89b0458b07c8
*1cc8d3f4cce8781edee0e4acc4cf27f023452b25ebb403851e79f3795b3536de40d0fa16693bf7
*11209b2fd2b30a2e20a7863a0a2996ba68f87e4ed53b0e3fea4746c47eaa60502d52368aef35ee
*60fab52e0a098d37e63e8d90f8505d903bed6cc49283dc339cedfbe2289811b58bdf94660f8f64
*bed083c858efce5c6392014d072153cc3f48e95f4ea27356d59f3a6746cb750cbb95a9d37d686a
*11db4b482d009b8845737ede1d4100393d24fb0ccd7cd44d1f848ad13e41224b9c7d11f60f7317
*d4b70f39feb54dc6d06e273c5a0859a9ed9133989544cf3243f241cb47b1b1d158429f07821eac
*945877e428cc120a5945c6bbd2704988b1261f84adfdaefe21243c570906195b5c6f712631ac10
*2dc0adc5ca8239af51b1944e280c8a71c32385d0023219975560066c509f891386e687389d7d07
*3df195a85527f0b39071352a3558e960a34483091d39ed383d8efa12f6bc7a1b1fab95eda747c4
*509ff2eb536c7e1657400d37c44ddcc6ccd3074cd4a2d5f0b7ce4a7dc8427d5f2bf5614b75c45a
*7dd8626dcf3063ba3658df6db9f6245fdc849de052bbcf7c32c7d94193c77287f77a70f28485c5
*7680db726830e2d523ca3507a4fca8d02ab3e0285214feda912f47df16ca9b4a629611c6546793
*1e69a3a87c31990f609030657b4ca2e486ad50c2d68d586039c58fcf8e630e49fc40382af61ba7
*7f7c730a2dcfa64f0fec0fc5d6a9b1274b0b812bb165ca6c0c6494a2d94e035947a46b914de462
*a86552a06ad58b525d7465f1d5679756a44d76953d9a333cc645766bcd8a80dc871762915a5894
*e46eddeabc810dfeb114b5897cddc074b6647453dd78ab5c544b23940aea6a7db7a3d6175fc72c
*47dfe6e4860c64e974a214052bac117bee232c96cb477291cc0a13f68a9b1125746f1c55ec3316
*239503a9d2a4124cea14e57027e53815ce04f89aa511a97c778e1bfabc40f539e16bb21c16745e
*d0c77d1203391d91407cc2a473805fccea6aacf784d1d43a7ae4be5f8bdc9ba3c590c140452bb6
*466239a40068f91f5b7c71f823af33ef63117d267a23f39e8aca26c6b17b59a13c7355c2d2c8b1
*5b3ba3b2b7330df4331973b467e1088876277ad3ea3456c8bf0bc4175d185ff403e1bb014464b3
*aab815e79c67e659dd14fe8149378470e56f1c57a1e8ff26228b91f107c526ff98c0b044de4c70
*28e12d4c908557a0c1909c3dd71d69039cf7dc59e16014202f83be4aec64aedc80c86158f463bd
*fb669ee9f93346e44cc55a904d4f5d0e43615edc93b42dddb95b6f158080d375479c9b2b22366f
*81dad2bc2f442e0b19823ec3601476b6e79937060bcc6cf5b2baa9af0d6b20d78556a0c8b0bdc8
*2b1c06340636019a54a20c00ddbb1d1ab9af70c4326b8d31aecee7dae58a93df28ab0b2b303eeb
*516aa05b5a8a556eb763fd2c3d3d3e3e7a7a268152c96ec3bc720b7c50877fa1791e30c503dd34
*ad2fd40b0dd249d805694afc096ea7a3affdddbaadcd75c622309b815cb22a3ca821e7f82b0538
*baf718e73dfe3c254e2278b98b3e28cc6084f4727b7544eea350d44678401676405d11e241f292
*f9d362bf00098ce3f896bb6a8997bd75479d2fd18a515641048f6891384571f5315021e33ac083
*842c0db86434d91e99a3048d5a62b935872ba81add78b27baab3f7c6c99e563787dbf0febc81be
*1557f04ec1784c949ab953c1128f010035c167331bd39825cc5eedc64efb70bd7b404e378fdea8
*62dd9c15f3cd6eeb147317d3a3ff5174af8f90f8e2f7990a78fddfd41bba275f24431cfd3069eb
*e4226fc27b62b9baf436880facdfe870af71797b91efe7f3b96894232229baec65984e1a8688f1
*dec355c5157511554a56d02c8326409e1b3f80880d7456483bdf6437dbac769740127cf63a1e47
*4f4125bfc9284a63d6770c6714048e72e2d486e5c58c7f705608027438758c1673d7a33a8a4f3e
*e61838ce991d8e83f0470f4626171661a2c23b4676889d95d63b4dfa5f96cdaa437b61c8ff66ac
*fb00a692f9c810f123af919e1fafca735a03ebd4f0571a6d47c3e778c8a1f08ef138433b1e4bda
*d0c36695efe5b9afd3ead9bb9f902107b3589495397e15ba35a8614e84aead98a0340cb957e75b
*1bea93d83c45530c2369082990280e223cd0c706a24aa4b43057578e9cbce361cdaa8deb51cc8e
*4e20b59dcbad870539d4805077db1a5826a676829910e510d51de7798059f44ccba2fa20101660
*40fc174b02c948dbfd46c0ad8b9c6f0fa2a3a5d92ba7a4524f3c7f8711b25a14a1303e2410de5a
*ad473a918d2f2ce24a2f31facfbeb04a1d1abfc9f374beb7994db873238b3ba5ceac9e7c3a4f2e
*56f965826e3034bcb498da85423a6f0b594927db6db778891b295fc026f56ae972aec8bd4c2123
*b6a453569676eb25a86175d4c890026a39d17b00062ceb606f5e265f1c6d77c03d8e93f1dc9bb3
*39aaf8b88b28386b9ee26a69fe1db496ec60c251d999ecdba27668d00f78983ddc386b4d53d0be
*464a05359bfc0f7c12d98c303dbb8e55182523daa9e454615ad622edc30d8c1177f12ac8b936da
*6ab1ab0c4e89ddca1e1235eec8c25c2277cc635990ea2f710d4ebfc0be19754a7ad3a023f28776
*47c4efae0d9132e50bf146740885f988cbc3684971015f96c05a0345c6772b93f6359db475b31d
*13ebc6dd660d2c368c205f6daef2f3624bd22e50f1c01ff74cee582a1b9f3f9bf44aeb85863bf5
*1931ee2f0c62dbc753756a1ff080305cdbf763fd95e38f57f9b2bec5e3cd08c3f666ff589b36f0
*2c746df928240b2e2b1e3b56caeb5de3dcfe9502ee3bf765c667c6001f2c5070fc6bff821bc2a9
*067216b930c1aa129b4c2866c6ca69e3f4acdbbc732bd0c1a15dc8b10a6e060cfb24819bc42725
*6f7700497867902a20bb8977e9c88cd047a1f0462ef5a09d8f779fe7ff0a0468c3c2fb857aa39c
*c99d234e69083ce8e3d6e7dca2eee24cc751ed905de776ae156c30b7016adab5b9d66a9c91d745
*b1492e6be45883fb77102349bb58fd3a943b51f9e2c418f9e6040500b46d8d1d84b4e7120ec814
*14b697a1db15b936a999cd9e583c690afad4d3231df4ced1a097951057f385ce785b616b1dcd21
*263d136df96e7d7b1f9f74c7479eadc48fa4a45c38ccfc7d649d03d437ac51b08a2825cbfb98df
*38a68eacdfe34dddb6e53908801579b0536b9c53072fe5e2ccc487bf37417881bdac5aba753197
*68387f6738631cc2c29295b2047661d21c38d3e3b9721a99e152c4cf6e7541f2e1956fdaf98a78
*6653ac8a9bbc0a273357724a592d563bb2db9bb81d0a022261c378005c8fa56caf5e5f95333932
*ea53e3d5638ed64ddfe45bced241d4f5cbc00e44bc744953441e4784ced5c06468a4d820ee900c
*91c97ce10455a4958e8974ccf386734029ca88a8808cd2c04961656563b3b71e9198d9be27fecd
*18342ccaf7f48f9bf6668a9ca3d459d19dfb4d4d0482bd2fe69d4e82d0472d7c84b18fef0bbc6e
*4eb2635be51b90fc9dc14187c4e166c196e44a3d14ecc8cd286b965816cc1db1695f024d68b207
*99bf9a9ab4373e41bc3778f599c843f41c253eeb44f7b1948f77c714a2731771e79c8476cedcf6
*f2bf51fa6ee053509a1f39a0598d8d2bae7e6b56e7b43668a6692e914935c9f0f9caf0d1802d92
*d025eccccbbc6095983b124b584eadd295a28ae3bb33eef2db9adb66a63354697891651cce5411
*8c070660597cd1d25d4825acbc2518c9b8985c4e60ea465f4c7e319acfd3afdc86efc7c54fba8a
*fffcb9dec1b1b6d76945515456733e8683e509867008f229075bb27302b9cbbede29574a7bc5e9
*8e36c923d8938fc2d31935dfbfe0f402acb633c39e0e66d237d8ebfe80840cde8ea3371e926216
*118b6e442fe74289bc5039123a74c30db8f7a96c56ff25aa5a63b53b945710deccfc28834e9c79
*f752e79c2e4f6cd8cac8816e40366a537ee35bcefc98449c621257bc6d4042c2c69bc3b843c945
*0b52badbb06bca1b268626ba53c6375aef1d6a27c7e358cfaaca99402acd663fb3a964f995c7f1
*bbcda653052ef5ef29e3b8a3792c1886fccc3c32f0dcbaebda7a75bbebf78e5e9b65b3a6363561
*bdf4e93cde13e924f0280b59c5ce95e08c4055df67cf1d1b1b9a9f919ccaee92de7d62fc0f3b20
*30f0a563e245ef082c1d47976b01da6e81273ef9e31c5372fc1cc597725b62c64b4e01e042d0fb
*823fd450e3960fdda0ef22800b9db26d8f7bcd0391706cfc3e121918934c5956011904bf31e28a
*3633f4dc016243e6d1b63e42d5b9ddfa4e192f946daec1cda313d7314478691739519567fb08f3
*ff74d39f899bc9d95ca6decfc90a53578d63e938dc2736ce4cedcee3414fe286e026483fa0207b
*99516a6dd84e6cbcf69de111f1d9a08449a813533b66656d5707e99fd66e045c97b5a9383718e7
*2dfa0fcc6946d73e4c0cb8e4a8b0ca1aee9bce6e21f99d3fa69e6cd8f4042f7dc98e0cc35cfde9
*9229e9842b61e2b6d3b3838e5602741cf593b7fddedabeb0a7d8cac656454fbfe5f55a0d52be6d
*1b359469d7dfe178a16fc3db361c30e0992a38e856783fca170afa3cf03da026d58aa7886e42a0
*a7d885c599ab2c1a02f9030bbaae912bee5d761da4fa2e0ec7f34fcc1d1c1442c95f7dd8667e81
*0a0088de067a90bcde98ba5d3fbec5c2fafe9c80e30d6592d23194c7d157020e113b4194346281
*cf46f97f22214a2a8ec9c9549c43d35ee208e3b2d02d23d735e8a0b42846ad653803746cf395a4
*c0a3e68ed62d8b77e48bc2f466f585173669f41085274587d6e7e8c264dbb0330b77a227035e74
*c7cd8b4e4acd46a7b08c5cbbe8bf10d1679ab08125c7f1789c9e708c1868cd5ee3d32176676272
*f52d79a89ec85bb7fde5d34ec0e0e15dff86beeabd89a42d8f7351156fcadca2a14e091f522d54
*88808ad68b7f8b404152f4e9995231879e7a32c1645e6832eb80b259d48eb763d616394ad1b8ab
*5618f91510b209e4102f35654e33d05e9b3480427b26a7d3c4f7b29219f4aaaeafc55389053870
*879cebecf7e2b0346e60f673d215c4da2c21671a0c3831a62d236705be3dd7b17726ba5b8d276f
*2e77244c77638cc5e97d17edc7a7ef13ee26204abbaa04413df01a0a7fed0952086fcb7807a539
*b2c9fb9076361e6d4bda9212a90f7f0f820b1578ddd558d768ee437be911e5a844b1a3b45798c3
*0b3e7dfa989f9487c0f7a5d4f1046b4664e0ddb8e900523b21ed8af5f6b8aa7858f1cb40863551
*1323c39df55d86f0c4febbf2c6aaec40cf733ad340de7bd82075ead9c28c723c1e95384e3140bd
*5877ac155d4baebc832f0ce315677d7cb5304d5fc491ab6cac6272657baacb55ec2e5edf18dacc
*62b38e1d3ca6b0c3ae35ff16c8329ebade7770277d19356dde2a6397f6cb518cdfed2a2c68d54d
*1ccf2e51138b9098ba1fc4736ca5b381b1055dd4c8c5e8ed96712c381fa6dbbf64a530c4ea1c79
*3644421cce92c2c1b334d9bc04f29219275fdf0ca03010927e675eb818c2a1c3c2450e5d50e4ad
*8076854d1844dd94976595af6634111e98485487c46a535c908344aeaa5c120b992c09aedc804a
*4961679e7fc7d062539aa49b34041a946301a220bb55dc51a0f685a846304bcb19177b7321165e
*f608ae4423bb4b7a9fd5cdcc131cee933423c8694170bf8998e8bc4c64f10ed3c981941dbd6937
*7ef6107a927254ce05e6d273fcdc0105b80ec270098bdac0055676076af3d8fcecb1de9ddcc6e9
*3106cccf1d733c054fe7e8cb3e6102243bce3f3ffcc32973fe9be640b0ff67670033eefcb333d0
*1d619815ec5f315ac4f49f1aadc942f3b3874b979fc2fc4291ddeee274ffd90d6e50feb42daef8
*3c9d471179fabb92cba0f0c10d223495f413a10f4879ddea431ce97adca65ef042bd5a02bf5f88
*e118fee20c7ce9e9d333a5a39b93d55ee90b8e20e8b053f84b07d1007e28bb047208a7f1067950
*c019044930bcbce47eb970aa9335021985affa80062cb95e22a07069c5a5075007625203dc1eb6
*0cdcbde42e95b880b62a9bf71f7d96dbda7efab668aef24d8baec9864a09ee30fc04cf3e549fe8
*2ee96d03aa90ca4f46728b4eec849ed1455e0d16577975c979d54214cea9e3ad3192bcfdf387df
*bf793dc3f234cf9f3dfffd89e75eb9c99b925818e642a31c0b2ce6320625ab5402986ab45a6a44
*d99b492153eb9d0eba31fdb000132393c93f4c155e0b4533dc22229e613b5fe4c2ba008c459060
*14de86e9a674f231075cd8027a39606fe86c76d3711a67fce7144dc815818df98c17817c0d1a94
*4af5d0ce7dcfe82697b4af3646fd4299bcb82cf0f6caddf895007abef58c54e35d6134f64b1237
*d0a9ef63e13c5e5b23e2da4aaddcaf32fe2d5635159d43fa1eb30903eda0121e1e0633b8f63f95
*1b04fa992aa1e042813019ce106b0d0f5d8d53c493a726d3c9ebbd1b0b4a1a758e3a9a1942828b
*380f7715d55f237c2e2f47ad1689cd32f5c4b34b5f7433c3deacc64d64f9ba2b906423cfb41faf
*165b5515eb940d9d049c722a90d982c2c8b0565ce50192cf33c99c833fae59acbcc4ba8bb4fc0c
*8018762d1b544a2b26585fba899b3205f2cf61c9d63294377486310493578eca896ae8fe4e7a3c
*3adaaeb166e623c23bedf7b6f5960356fd862537221690ce11980efad5995305fb8c6a7285b7bf
*dcfb580953c3506025b6729d4cb809dae3fccac93e27819340021ff691b01f058f62e72e92b901
*18fa45ca96ef5650c583ab820a2535059d223af3fc12f4bdafc2cce0f874e42cc752216dbfbdb2
*d14bf98a4955002d6bb585de75778734c31de4791fdebcfefecf52f4406278313a7e1f52279b0d
*d022d1985bbedc05878bee397ce4f59b0fdc03ec104a2625893bfd58aa5c85688a6fc5e9293a8a
*cb4eacc955628292c6f8a66ef2669f7aec0ec188f7c2acad97cdc9b2c7726b7937d701e760d5bd
*9cd96439559520c4041d26d4ea0921056e095b909dcad3640414537e1c85252d5e6175b7ed9567
*28c074ac9e7b46ea70a1737a3c0698ed36df8ecdaca413f40262c1ede4efc9e7bffce52fd3e4df
*122c2bfe2b3feaa59d2caea0d9d8d1bd5fa53bbe6f22a562ad900ebbdd8f2391c45d7474f1c148
*746fd7df4eb640a4e9a66385c35d275ea61310c1809ce94873e46abc006220c7cde9d08395a562
*7968d1cdbc0393b00963dbbc98660a2d8930d739bacdc67fc4135693108e7169ebd0cc43016e3e
*f7ec944684cb38560d7fd6bb76a0ab41fbece5c2c6ce26c9fb42cc5232764c245d2f76aed82e9e
*346b5de56459c069b76a2769971548711b35ffe8b050f7145d603e4e190f73b7d11e4c8a93e19e
*b924a3ec97688dbf890b142449fb8a0b9d3b91c16e61276571552df22f220d104b210a98cf3b25
*8a2996409dcfcb6255482e633748368c513c1a7259e655363ddce52e6f7238e80b3f8f4c5f67f6
*fa9688e41c7cc5f9cafc1e15398f5fd7dbe2988723629ad20e944c62cd33b94cae35d1babb1d2c
*a663d648b5b5e86838c7144b160bebfac26e3945f642674deb19614fb2481787e14ee7c305e5ba
*978d453594a107c3ce649d9c982ce318061791077de284083e2e528a42283b6364fe0593bc28a6
*9c62f2383ae2174c4bfeca5a3e2dc8520c85dd3d9930153e2757daebabce26efabbd1538e93232
*9ece22c5eb8358c84cb9c149b6b0f5387d1515d9e2020884cec905665c02f25bb0acdbd62e9f88
*05c6c2eb6ab50f65ec5be3e50f69949c9f76f3766e3ce3f2815a81c96668bf272826ad0a73a5bf
*eb49d5f17bfe0564c6e4ab8017945b1d794c0e0029a3cae92d737d9b18a4ee8f253a94ed7c71f4
*b18d3a6691d68ae9e4043c3438f20f904fc81d3e71b19e9c398381aa37e29f2fae242ed01ac61f
*165ed138d6596dfea6815d791d2ef209e70fed6209ba7c637222e20df0e48f65b5ac6f5b8a4877
*f787876c47393ab9bc6c87faa8d86b9d74f86cc339e8706a5fe4db7ca84c1294678cae40926ccb
*f21df583f7e7ffef1389bb3dc24a4c43bf5a9aa782c8710d828c0ced74140e7b7447b153aab337
*f085b3cfa6a36a3b8a7543da131019ec5658ef663cf2711d0927ca379b19a5ec07212f9c879175
*e76d4da8d2392fe7aab0a7fd6716cc55bde604d4eee0188f9ebd7dfbe2d98767a32c9502aa9925
*2d0ad8e24b005a2137f0f38b4203fae1fdc9bbb7efde7cfbf2fb1302661057b60068f5fb37af4e
*5ebc7bf90768437fbf7df6e1f7a383ada9c561800a79fdea8f2f5fbf78f92ef89687f69b5f3ef9
*cdaf9fbc3aa1e6127128010298469208916e249b693bd6db54423947a358704137fd97240c2c35
*75c5e2fd0c5c4fb596c799a64c0ed5bbfbb2e65d355a2947040ef593b1e1cfa22537e3d88fd44e
*1ff1773e3e7cbc6b3fb37fc00fdf02f76c0b91f37a8d9a1e431a6a1b39e91b40b3649618fbe56a
*9ed7d54dd16cc9eed99c975b9218e5d60b9f2f26d18317104066f881894d6f767cf114b366d24d
*f60aa4e8a65c3c99b88a212c204be9d2a5499523a7d7e868e4332899d1a698c07c8f47a7ffe7d9
*d17fe5473f7d7ef49bc9d9632c7d7b3472256fecf84cbcaafcf7e78cd2442ff24b1ee27baccd41
*09c9b106edb2c6d471b9249e61de1b0e5c0f9b3f63b1296faf5096a1c19b495ba3c51313d1f05b
*942f96706cb20e6167085ffa53e48a0c9abb37a62eec2801163319a5f79f4933617a32e90466fb
*d6cf99c8117d39ba27a5dc974e6623574b5dc548527029057f515c39069d2d3f91a0b08c360fd6
*c6a6f3646c6be77bedd93b366a4815f6231eb2adc9f66bbe3f2ada45be610967ed260596201cbf
*f3a3f833016846c74531f576fd6149a1611adcb87c0df2ae2bb764b3baef094b534357693e549a
*d094cd21d5c9aeb8a976cf35c45de11838be4db4bfbd1e84cf247d857d66cb9a1f08c6c8a4447a
*1894f1c925d1ed97dc3034e30aa31e47c0e1ba11b0d1284def2a8d2338df55c9c5bb037021b948
*1566e19787cbdc7c5aa75c12f5e51beef4130ad1a487cbd7fc9ca163e6bb7b4f42da538c26e20e
*efeb0fbefbd9fdd93261dcdf816e2cb1e3e6e9ebd834ca62737bb82fa937e88189c69df6d45c88
*4cfbbdb0916a6687c64fa1a2aadda45b60ed8ed8a37bada36bffa92b195426a32e3f6d29637d77
*a6ef8e208c7b0d527f111fe6dda3f47aed92d1dd2474089570d43d97b16249eb75a6f658e53429
*92064a06ffd53e193d56df44b782bf49a9711ab3a105c970c6c3d7b5e98fbd140f1b8cacd5c9f4
*03bc665bcc57236e447fbf72b7ee14feb1f9b1828318fed50bc4fdd29ff57c649dd6d3a4673104
*052f113f4defa93bccce5cbf0660e05911f59cc31afd96c1a4a24b856347fc66aa249eae8e7740
*1f93025355c17619a91ac9312d7e5609bcb515748743eada44e1dd584d30e8bf9f67de8cb79b55
*b91dd35467bd53d24dd1282d17ec3742979d9a01049c85b331c2791aa59da9f340955574d29470
*640e928e8b8869fb75bd7d69a4b86219d323d948bc11ff2b194eea0dfad68db36357a974ec2267
*6151ea612ce22a881afd9f805118edf63f01a70b7393085d3efdb24a79e1bf3abed3c0c0f01e79
*5f199a7e32eaf2646caff0328240679e4a9279481456f236c8c0646445db5bda7f5c70e389693a
*f64317fe654b207a07e944f56eeb701ba7236f19cc4a19cd00d749d2cd649e4294ba0b009797b6
*bea6d7c2ea4ce6897356e6c94dd96cb13a98f3b41fc847d3516c743f9368db2057410b73be996d
*9ae2a2fc38d6e4e6bd0862201fe06d611822a8dc945458b229ee1aa7e6892195135f61f43e6084
*d66a18e975b1d5d6776db940abed57046d84ee404c138596fc442b5c72d50bbf9b48988cef459e
*7694341d77a9b54797b51c5b7d3685d71deb1eed1351e42745b56c9154c6233c2b477d77f395f6
*6a761aae3069773e21773e1305d7dba02c8e8e4ebefbeee8e5eb6fdf8c0e7cded4f5d638d80e9b
*32dd747473fd527f1424e030618620d94f9431e005fb412ca52baaef10fac1a2b1dd10139ff0fb
*4fadd01f40024790a7451f3287bfe786e1e7de89d00bc0b40abefee7156ee05ad5fd75152096e6
*7c94de87493336b8ced883501a7d7c674e07fa7282ae6015e1768161a5abe00b698a218e14a01c
*65a6f42f719f0444a578ea7ab3dddf97ab724c8678ca40c4a7982c936e4deaca3993135308cc04
*521a262fccd7e7cb3cb10b7eac32e1e07cbae1c5da8a63c3d04d7f432965aa395c72efcb45ec2e
*c37bab7b1b188f21dfde2ca56ab7fe57b939bc536d449aa432a3f9faa9dcb0158f3c80d6468794
*db7eb2ed4d757b9f130afa169e887f91383f99c19f2eba51323068b141ce85b30e283cd0cc01e1
*b77d8c615bc5468d437a9e29a3dc451b6c9f0789b3ddea939bb8ff180303f84ca2daa930360c58
*45ebb644f9a2efc863bf0f4c2a075bc3c88e5a39b75d9c349eb91c6099846721a6526d99756f31
*be97ce2d3d0f71e98bbf395d197e631b9f05d2d7b316ab20590dd817bc1eb6e642736ec68807f6
*c396ee9b721f99073f2af3526032cf3db5eb9ffc6042659ee97ac15153ac724a10416f10a61ff8
*c1e818b210841e9b0e2947705bec96f5d145eb1f96fd536cce62a1aafb4db5f9287dfcf4f84c0e
*5cf9febf67ee6d87b1c9ffa78cd3a17931a289dc4f84a71175d148390cc6e65ba4cd803d711a3a
*5cc4618feafd40a7be5dd58beb204c24431f113040113d31c884b5680bc15286b19f58fcb63572
*8df09ea455d50dc3b416d4193dd2d15d7a0641fb620190dbf366b0fb20a5f28f04b27bfbdc9687
*8cbc77c2bf8939b76670bbaef29eb09341c50d747701b2e8aa5ddd691d1095daea7a3aecb4dbf4
*0365b52c3e8ed3fee17bcd4e0d80c8fd7a381c5d12f10e7e3d299c055d4f56377d18a772f8d541
*7fbff1202136a92a94e2074bfa7169038f2c31f05831324ac36d87ed44ba6c99b5e54f051faaf4
*d1e92fcf32f7e3dff58f2fdd8798737a86d1051d43d978f9f5d7bf01c6f59b5f7f9ed18f5fa6ff
*f6f9c76fb36409ff79fa6d16cfb1fd20d9af973e9c2d7e06ffa45f7ffdf42980da0aa82fbfcdf8
*e5d36fd3e451f20559e1e07f474f09ce15062c15dbc52472770a118691ac316324fe3d595fe37f
*c676342a623122ede62bb3db65c927c1e5a7c34aa0d94cc1f6ed0b990ccca7654b76518b454ce5
*e4353761e7ae692cd91536c178745cfee9948880dc12f2788dd3319dda193bee4b23ae3e8479a5
*a43219df85a022bd45a32e24f4a4a6173fba60ebcf40bddbe20d100a8447917c7d8d0ae1663c9c
*fc2f813bc46c8dcd34dc3a6ef469185d4f173ac60c396a6372acb513984f9a0b7eeabfda111d31
*9a489e66da32fb571a96e5610ad2b75dcce76ae1067766f7e7db10777e2b817618f8d44dabf7e9
*a47698dcfa32faff4b68ee10ddb5f5ba38af9718a14e09eb2803517ec556a203d0762d45dbde16
*a386aff7f4d7110ba9355e4fc0052d4e3968513ab2a19bcb624556171b640c809b7d6fb7bb6a55
*56d787b6f4ddf4f0b387c429db06f7222543d7ddab637c8c910293a340d51c5d3465512d575224
*aa93d430e008c67cd111950255d87a2259c88a572b3102d8e959afc8301e55a42cccb01cd664fb
*718b511b41dff4388d6ea6ae1731e2eef2f13195d73a9e40f1810782973b60cc68f88fb8ef995f
*293318c942c1dc1d4edb09ac95be0a29e199c93f13c9d889990bbd2ccc362d9216e04442e94e0e
*5f4865d3648f2214da6f9b5802488185e148ccb18a8d31a942fbd36e413bcff04bdf61cda76ad9
*cf93e0e529373d33992619782fecb82df67e4549546f48c6d41355d14ccfba0462570e9ac27fe3
*59c59651136bc7d0d1d1793ceb88340f49b023b11b630edb94e2d27cdc66db41c823d118328700
*7bd6dc3ed054bdc4833071412fb11e410248534fd1d1fad3fd83363a8627df438f1a7b7fd84647
*19fd97f47b3062246ace75d63afb172a4bca00d977b3d1d82abf858dfdca7051cfa4e9cc95e67d
*720587295e06a5a431143abac21c816fff937d26ec55e059fa21acd3689d5653bfcfe1131cef93
*6dfdc48019a6ea828735b8360597f1a22a1e08c70b78348666c3361143038f6350393b00debb33
*f5fd5a9bf1880384cd95b658fe141625d89a257952290180bab2efdd7cedda68439700654a8fdd
*d4ea86b0c5c949042033cad1a1c0b488e128f83aeec1b60e11a2c951f3c3280d7d116c6232974c
*2846c7ae8a2c86a58f5295dc18de2376ed9f095d8b52fb5b1886a5bcd0ffd1a5774b7c64bcbabc
*d477dc7ac8fc41f2a2b82956f586c273d194af5e2adfa3227bf6d1bdc6800034a46283a1971074
*c62e93500b33d0d2d81ef3466a806449f71bbc2810fa514918008169dc71acdaefd3d3cfcfc2fc
*b33aa11ff5895dea94d953db5966509d9a3f523d873f54e8b92c96e1a4077329fb273a97473720
*056ff6f86fb458603a8f3be7c9c00ccc4df6b1f20ea787064fc5c29c1dd5818d8c5a8787473c3b
*fc9d9df6e34331d29e82113abbcd9f3a72c20e5c1f18776c0384c98cfe50091f7316f9774a9f13
*eb051565dd058d216579a28e312f8bc0a779a90c883b5d546143e39f8a87b09bd65ee653038183
*3822893ee271ec445861f75908ee50105e047808ef8e3094c1c02b8530c39cd1acec60ee440e8a
*15a1835f598449faf04b1d4b13ede4949ba8f348b3393beb82d4eb5c1352aa3c70590b2681b9d7
*b1cd80813f50cc6582a6ebaae6aec3f0a521a364ec411c700611126452498f114590aef6e2255b
*bee27e956f337205a3e8e0b61a559f30f75b0c96369166c687551bd43855c54b5d39a9812baf64
*7095b407f3f9e6fa5229c654c4422e7acfa5b6195e78a70ad936f971746d4fbd8944f526d24aae
*d2446a65608f9802799d916bc8bb376e73200735b65c7e2ecc7d3db720e606513b6b744964667e
*bace7817306e68a724c4807f6cb05574988a01e97b370115337755e349d5c0cb8a04fbdeb6ded8
*d581a2d9aa8f44e9c2bd7de38593c214bbe45cce074e15854fcfb18286b26ad5bd3b8c25c4c988
*cc7d48f8981488b7574cdbddb929ad62d1ee04c963eca26f1ee2afee08e2321ed3480c960c49e0
*a4872bb9c82245d5a0b1749266a6bb8881686f2956695842263dca95ea58e8c55ed47994379740
*7b8f1e5ddfba4df1e16a575db31b3437d7e0f295fd28a11a3a6b6021663f5caeea73d5a07b059c
*ceca850520910b5e7b91bc990906a623fafce0d7e105241e170d4bed1009f6b9e7163125abd2ce
*3c4b80a786a9bb31f976eed7cddd5c884bfd9923a19309d302474e53618e9755f953c182c552f3
*a441c7b26f82d2664149210970a4c7f78c727c90ec94083ce892ec01c61031f475398527f7f698
*f4dc2cc737e9a160c9b42730a02bc748916d2b5be2616a1521ae3b234bd4e1055849dadc57d751
*81b39e9a4e34f7280be377d1a246b25cf42a5822c267d46364c620a43b381a75da6b08f5a9c880
*4b0fb969ec1ca99441547d018f51ca516656bb17489f22a4d0b6a8fc0c436a9fcde730cc3e0237
*a696716f7f0e6d9a6cab6482125a2c8a25e6649cbe38f9c3c9f76fdece5ebc7cff210a281d445d
*4e18f142e130489f31fae8258dc3e5c70e93cb01025047d7cf43f808dd5e87b046130b63bd2a7e
*3e9e820a029be0c037e3f4d85617effd4a5776bbffac51278df472082937815627e8f720840716
*48e380c66a02a7eb4b5f2c90b30a0e8799bd1334136543f42af5c264bf8f295c9dcf43ddabd320
*a679751a91deb52c40616a0a07c2e6e1ffffa26d4590f2752dca4f8ef748b4610d67a77f52c8bc
*3a935d4f3af16bb2328571b1cc391b9317dd7d85f38291685434f9aa5c2d8339796de7ca2e274e
*216d304912c555b79d3a2319d631d059d7d2ca2f1b8a8b434dafc45b73958014d9508a7ddb29cc
*8c7ab9d70960b54ce5221005051e763223629ccd5c5a2c93540cb71f67826569f1afbbf2265fa1
*c5522081e6f9ada7562a629109c0f80edebf5dfd7455ccaad62eefdc4f8210d91a5db5b4d386f7
*87fc9a912e6a6d7d4a2474bb4097a1e7eba2e63684544b6ffdd04d27f88d6d2ac6f41375546510
*ea3ac765b5ba6915acd98678082f9e1e9e852d5fdc0959d69f139ff38f96dc6a31a0d2b8033406
*e45401a0552a6e277df83a18134b881814f0155d7b9ab183355848937047ce0c73b34d923c8c0c
*9c51e7a2a0aac3f39a627205e8f1d0e6d177f08d1bab634ae812666848708a6b9c03d186d594a9
*c3ed593d3679e3ba85a84c009c3f695fb1835edcde46951d389996e2abf03f31d2f92ab206d678
*651c93121f4f3b4c0e0737171e3895a78dcf103158f1c61aa9a62366ea9d33c69a7561e226f982
*6a0aa068772d92b8a7e992e66441a22c10393e63aeabc1c0bf6765e313cce994f917d430107832
*c20e547f417d5403021a1ab9c3796ee42ae7649446021e6273da5065312fb1b4b095d92cfa3a1a
*a1a62ae3ba2dca711266c163a16a87a24aeebba91a571a8d4fd50f98053cb95504c167a41db504
*82612e452c12e58cbcae5470a6e0d19187c7e37991ec361847eaa22b2264a04b9a327658d0d485
*8b44d8d39d50dc3ec6daa88330c6666624d46ed1e107899c3f9cb3d724d11fb5e1b09be262552c
*f8fe26bb9e51fac802607cb0ef31cfdbcad783ef3e110783e89d31dc7f286da06f50f69f185d3e
*ee369199d1423f0f46d7550c0e5c50b86e30b9ef6a7f24c4bf8c889be62476c8aaf3f64ee6c0ab
*608ef4e862f29947b4304e7b6d90dd29f4a6af9b898e2f95f54e94b430e740faa9f3ef494f71bb
*97b7d49e944b99aed61bacfa005ba76a8fcc1499f1725a5d550b89e38428c2a1e37bbbdb50dbc3
*042d0fb426b465d4a0e69d675ae90b8e2def4ce882a1959a4e5d67fe5abb4830df60f1806ba0ab
*1b00468ca6b49c5a64c670eba213d2634ece037a5b8fb6e82d727a0840af1d3a00c1e453ed56ab
*7f827cb42879082931da06bd5924ecfa90e936484802d4f5da3410527c82210e1485400a18d6fa
*6bca16b3ecee9a4dddba0a71c1650eec08f3c7598300dad6fd3e655b7569c666fce007d3bffd43
*f08be55b15cfb24d627238c36ad81a485f72df4d7be7a61ba28b1f08f2fd12f3f1c08fe58cedc6
*81492f432d6c34e3c00561eab8ce98a0d36c5b7d659473af45a40eb64b64bd3a8321102f8667db
*b4a1f51e330ed28ddb27f817d00385d3507bb63ccce71860c219cde673e461a6ea8a3d42bc6aa2
*d849e63e49fd63841dcfd084278df10acf0b94b38c05ab732890924eb7f1f435c5d10350558c95
*fbbadc24e7abbcbae6713c9151b53d4ea936c2af08578b6cf74a16bdf2e6b6ed757ab583c1f72f
*5f9fcc4e5ebf20f29c98e438cdf0c7f6d1f8c1e451facdff1aa6130aff57a2c8ed1596eca0731c
*c72ca3183c7ff3fac3cbd73f9c4460fdf8631ce003b6308a2d90533ba359f6dd1bba9ddd4169fc
*e3eddf4f8f2667e9e3d407f3222c548b01f2833f9cbc7bfff2cdeb28a8df4ebff9fbd7f0ffd3e9
*df3f9ba6bdc01f6082c80925fb8701be7af52c89629675a6c94c16ce4e0e02ecf61673d27344c3
*9bdfbd7bf6fc3f4f3ec466ead4401a3c3fd0eaccb67af5e6c50fdf9f4490ba7d3cfe7102ff4e1f
*d9291f600edad7cf5e054bc46c7538fee6ed6f71ef7e7dfa7f8ece600ecce3e408dfc034c88b64
*7cb4d9e3238aad720fe9d12adf7e3d799ca6df24f4bf61263c7b026bf1bb37ef4f92bfe38f97df
*bd7ef3eee4f9b3f7270383da00b18133a7c20b81c16046e31f978fe1cbd3fce8a733fce3c7c9df
*93a3749429c078807209e369f2b711489fa3e3d1022f1590205adcf2cfd111fc970431ccb9d92c
*e4e9b2b881bffe63f40f941785e1023f6b6d8a5a73455af6120b9e0d59f435dec2715b2f7740b3
*a5e170ba30fc99e1bfd2f0122f3514b8d329705e7fdb76ece5c2b64f8f9f9e211aa3cf9f7ef1e5
*2f7ef9efbffaf56f822f79b363dbc94f70d6acc6bf4e993437395fe8b5395deda17bc059c7d046
*8f468f1122cb88e6194dec883c534a13a0bcb14f6007e44f40975b964b8a006b6ced12fa8a27dd
*9bf3711b4bddea27fce524b68baba6aeea557dc999f28f5a9077c88e4c85b07501a21c8b875c5e
*258ba66e5bbb2bd1b380125a3b228ff762fb07e904d9dbf735481ff2e02b73ae60ce7cac4b81f6
*5bc1482a17dc9281f6b66eae39b9800730e36a1e259635c00205ad0d276e61e349d523cc444fc9
*fb31d8992ce179d2aecacbab2d0e6d9d936d516335495e624a5d82f5c894da7a8453c385d848ee
*33d36327705153adb316c4145b768102a02fea7a257851f9135892c69622d9abf4ea000924675c
*495480e942d2a298b81acab66c3c5796b1054392ed0eedc9f5852c225641782d3488a22a4da6ca
*aa6f30c69e366424c0b1fd1a96ed12b3f5b6352346f099860b43d3480e843b47804bfa2950baa8
*a422c0bcaa6fb1ed399af3cdb73691011685b118bea8b7a4af73c063536f36585904a7451241f3
*a768552f9658d7a1c94b2a5aff5301c466698d7603882a97eee447f7a0038197edb9a854c64383
*752926979364f8c5e41793cf8754b6b1a64c4f4db1b4c493e40c0c5b0d27c9339dac996543044e
*5ec023c9b76c172a5f5dd60dcccd5ab24d0935c8d899068747434ea25dedcd1864079a6231f414
*8629e52ab8aa659b0c697f0ff110c071514c7d9e0c37745aae30547a88516e7546a81f3d15d9ad
*155cb8121552cd790372dc15b348fc162884066bdd230df3139aa7a743b323d45c55c52de7aba9
*4c5f99b91500ba1f5dd469c3464399a7f7de64e4f0e5f01cffb5c07fd1d0e911ac3f3d358c8e27
*0dd611686d6ca78a12930bfb33f3e34f5fca16316f0a60fa8ec45e60990e9faf864e9018cc6e21
*e4036209c6963f35a3fb966d1319f624bea875d92e8a1548ab45bd03202838674c6d321343c007
*c72a072caf03d360b31812feeaa685b15fdd6222339ab572524cf00deec9cb2bf556c62885cf65
*22db70996997d754e3046d8954cd373c1c704e8cebcb1003b9bd008cb8d58670f6d3340529cce1
*44fd8f919d58ac1453e326e200129c4113ad59d196907a756a85b6f9a5eff5321a9adc8ad43244
*5cd830f129612051b3f5348c47a1075f1afdd61cc8c7e2f2a4fa4c98bcdc140d437c15ba872efd
*49b176b97107f2c92391a28e3bfaa4f6b252975b9f1352f45901ea3170415369cbe35483fbe2f0
*b9fc33eab9da1820c5cfd4ed412f34940e25a3e89a0879740cbfc55ab362ee7012c91bf6ed5aa6
*46958e80169628a7941823cc76179243f8e343e1f29532c4483e03d4b0b1b0abe4b9e73f5154d1
*56572540b226305630d23bea520d5f567034974be3e9c36f861e16419628b1207819577514babc
*57bffc6634244c0f41734dbfd248152b6cf2ce159b9ed0ee188f871f4f1fb667985e07eb25b872
*9e6d9aa6f2a10f4c2e667070a79b78e00edd1c5fd827e6f4999a0c3e76c059678869e73a340d25
*b4163c9e26a055248f9d19c5b5ed82e001c4602438ec911eb6faa09b2a460f15c9b33b569373dc
*91b74cf1c326a57cca924b545dd042efa24ddf4e2b33fdd0ec0a8cfeb9217acc38a01d4b4546e8
*53be39e6a1caaf317cab3e532182148f31d5feb070093209926d6153b8bf124c9c8caf317172ea
*194d70d6ed5dd5c872459d6b0611536b80c34bf0cff4e73bd55448ee78f8b0a1f090aa4e1e328e
*f43d11a0eaacb3c8f44ea72ee709e505badf92e8ed664d5766d7c418c70fd57555df5654e87c2c
*395f4dc7a995ad732fee76c89b47c503e49b312a47c02ed1a4390171def774e9971850b2ba914b
*b208d6504eebed800ce9c891516aea763ef80fe2e25c5bcd55c0254a5facd017d92ce21c15d31b
*623357c9842981cb8ed3012622c61c60a842b727aa59bb0759e3a39583b79c4b6ead439a945516
*936b08811fd3df44b0a734c4a719fde78b33bf2a37e344dfd35558c7c44517a1b95a5add2d99cf
*8f89f2e7732baa71f40e77d39ec10ba72b703dad7c152de7d6d92e86b55b061e4803b46959119c
*e2c41be3f474943ded185347a7e489a7e6dd6d448f33db11fd34e04e3be078d7fc357aa4c08932
*7c1cf2519f6d4db03a597bdc393cbbbcc2e0831f05a79119d6f1ddc332f3e88dea383a2affdca7
*0f5de8633cf2f1ce5198ee7d68a12741f13c07eb938b60bae387eb199e93216144f7446527303a
*863c4709975c1d66ddec4ccde2def1e6c24381058c3909370f3233736e7e52e746fa6246212722
*510f669377fc654ccf52af70f0010634bb6ceadd86d910fd99b14fe02e7e54799c88be0c8a932a
*92a0d7f71602a9b59101f95355a8ba6cfd4c233a3c58fb1be8df61dd810dcd552bbb0e9b98e90c
*e8b9d84c4c86180aff1cdc45c0e3e18b1d971af478f4d0ceaa400c226900f6a9bc399baaeb9ed6
*0f5cb66aa579b162eb3d9379ba73b9f1dca3c5a668f4bb0e1d688d5a5167a9db60ad957b8be02e
*cb45584843a2efe9f216791fc687b686b4a6ed0e473017f41cbb0b6572844768411331ddd9806f
*3a6a29cf633469501028de9365a6376abc4b17ea286e2d7fc13b221c6823f3e9d3855967fa6f9f
*a74f0651d1447c1a851eda62666a4fe9f999de31c22cba7ca2231722004db8484831b285e7417e
*717d733fd475ffd80018546e179479170d173526c728e1870df66662bd7d62ae5cf45f6957918b
*7c9f43a4557b35897f7a7903f8911848f897d3ebf7c672327dfbe7d9ab67fffbcdbbccd612b7c0
*ccfd0fbca1f9dd77eef647272587ea16b7822dc4e8bd80391889403cf2743963828ac677ba9bd8
*ae1a60b4126280d25eb5773f824632606c227f86b7d8a520ebd4d5d10d46aee6c8fd08ee90ab04
*d8f6760f7a5cbdecd88718a27f950799a2f991992c13994f0aea3a25adb75a084b13999a18b7fa
*686e4310678f7ee125d4e04fb9aa4f27e78569e0ad2b56a0117b1ce52f1b5242896ce83276a461
*ae36345233b1a1cf3502d6c45f63cb8809eb9386494026cc28a2ac93e4aa5136828fe1dfe4bbc5
*ff0284d181bb7b4a561af817e964c92c11041b368afdd460eec7d5bafd1b1bdcd4fcc1f76a83cc
*a31e3505bcce7b27873468db570bca510a186e8a66bb77035369e38f83c4abc602400c6c444c74
*69501d61686116ee2179705decfdd11ed944d4166b6426a334f3b76916eefdaccb463a1b9de724
*558c17c66a8d8c64a44e8feda2ae396dd544e6c434505fe31b6b3f32dfe143ef4323ffa056da16
*6662d1b44b55d8d97bb1ca7fda5b7bfa6d2117d04d03ba1a9d577b0164390b56d95d3dd9552bac
*674121797c08adf6724163922463f424707a4affd2af0196ef891723b7463dd8049aa9ea9fc67a
*8168a05a6feee35bc9ce108b9d1b58d74fcbef87bee84fb017d98f8052f9df9dd3297a7f55fa34
*bdf1a796d4e167ff907caafeb4d1f9df7efa40fdef11e51b0e55d3f100d8b273422a5436374af6
*f18099f1fb6ffaa7e267cdc1cf18bcd6a25cbaf2c37921f42d65bced68ee936b9f90a072dc77b9
*f3a010c2173595e5e1f4e9991186d3435986e3d3d07f4bf86e1b0109a0afca16ad70c9e80f6654
*09269d2df076daf289caf34681a46272ec39d32234a18a29f7d2c36c596c4887fb2482305f7d0a
*452cd736f7a3f91c952d922393d3b37ff466541d19dba8c9a60a5fe3755ffad99d7b9b8d3f83ef
*38a0d057fa22e4c8d1b4c77d37d809dc31ffc7d094ae4a1dfd6eb9d6172e1823bcb521d95a9903
*34ce72d78e11df34baff976bc97b63e7cd2eb27996768ce69269cefad87c8dfc7b7421812aae6c
*87ad9c3c34856418e1c42938057306332703ea0e588d56d8d5d2868401bf8384b9f8c44c02cc11
*de63205998725f068b48250822eea3a84fc3077ceaaf527a16756c74e39b0fb806e29bf8616b1c
*1ded0ee46226928b22df629c1897f134ee8b8fdbf46e89148711a42ebe2be3e1bd92067738725f
*aae0bea85a6ce210c3a0a81b50fd5d0ac888d947eecd68d905f547ed40ae386fd23c19cb56991a
*c53b0d6c42e67621730c753dac9b1caeacb0bec9acae8272690a8af93098a4de8b2f5a82eda6ee
*d95c5ff69d7491bb3bfde99f0d1c17637e1cbb62777da9b6bb291410b270ba2e4f2475cb213466
*43cb4a80c8c9994e9ba54b7d474cd746c2e91550555f81e68fe07f9bbd7894fdbd59fbd55e3cc9
*2ecdbaefcd311553039c7d004f43b1810c22650fcc2e308a43b8ac823b7a9d8f468fe33a864da5
*25a557ef74379b4e0d5dc40b600383183f6c53c7087a68a9d79e1ff15af7f8fa912f2a49c0d7ed
*ac52e757a4efba3b1404ef26a97bac166578ba631e691e9e750a7ee30ce8d8034f83f625561e9b
*e06dd43bf2147b74fda2581597146dbb5a5119d4457d59d145accdee7c552e9cc3996a054e3a49
*1903d682cd3d3173368a7a177cf986100b07abe7dcd994d8e792de693db23b03ad47f6164f603f
*0cac46ce927128994cff25a134eb569954efac19c403d767b0505ca263b070f781dc29d26a11a8
*9f83e1ad1825a9cce7ac6d936d88a23a03de86b91d16dbd57ed82d3fdf75968e1eb6d3e9c37614
*27d0c4635241e40867d89891315e4e7931660747a91b0af9abf1eddc7383802836a74fe9c64f27
*a0420f84bc4ef608670cd0502776f4ae85afc7331189dad06efe870d19172889236d5e0d3f8b84
*6e6ce8aafe38c87eccf8191543e627222ba8e9d1f382e22e9eb032395942b26941c99ba4213439
*e8c1b742b39467fa64d5250a002da04198118db2a756962f1428b2117120a2dc798b683d4c71e3
*bb5d03c481846a5eacbffd23b24e34fec8221111dd9f8a959b5b12c2a8857acc344eeb359f23c2
*f379643706648c13c8ee231a83708bee3f067727e8e99cc2c001e5ecf2717f49ad03a781dc7137
*b1a325a941206fb55b735dd04ba4a77d3cec70e01b7a0a64e8b486e7871339dc29961278e0748b
*6b1b4abba8ab0b38e9b6632504558c5397d5c3734706e7f19cdb95d7a822899ea29a3ae0a408ac
*ebf77c138a0a241367f6c6734161b0a82d5491dc6f7427b9584fa75567a6e2b52e288b0a7f4283
*a14874df483d9d1a5f5817e0037b0b3aafa4e89fb9f2a23c45f50de6a3d9b63d49fa4c8a0ad135
*c61b22bbae7e57058daa682b7f8c5d4950e749e90008c9e941b23189adda0dd0df2dd5d8be2d4c
*3ede46b60de7f8ff2a41ebb144342f8d47b70d0a5c3fbd87025e211998f162c10b1c2b10cbe3a7
*51ddbb2fc0a66fcd638636ac87443d9e569b33a64bfcabbb528419157acb3f0b4b066986d2b3c9
*7a04ffeb623f9d8e28f9f4b6ae576dbcd68021bacbaa6e38151668d237252bc0ee63027964ba6c
*93e478acb676bba180dfc596843ce8386ac8ead536d3806f0557b57b5412dcc6a087fae510fd0e
*b7f56646975d625a2dccd3d87c8f9cd0576d131f3a0cb1b36e7e8b8862ee1f985d02b17115be3e
*e86947ea42b77406a4349a91bc3a9b8d389f4ec7b979514974a97fe7bdf2ecd5b8570f20e5816c
*db5d31bbcd9b0a33cf7683ca5e711424e852b72eed9a496bb1e4d8cd872dc7447209d7f38262f7
*f15ed9b00b8f2e81c96943e29d8c3d8391051ebb40354ffd8a1ef775296839fabec176fea40c7f
*a8ce77e58a8a4f106d0e1fa362ce3d470da7aee4b67a88f1dd6ac763a117161f02c58aae676ef6
*5ded82d22eb7db12ef565664b0c19b328babbcba849580bd795b37cb04330b7b061415acedafef
*482b1c68e1b6aa3abcdacff42fb159e0df6675465908cc9c61ceff1d10e1f5adb64d2352996f2c
*a04744f66e5afd8f4686058cb2207ea2a7c6eb8cf441d0e925d972bf4f822dbe3db1fda7cb8215
*02fcafe549c6305e6296af8d49612171abd6566e0262f94eae4f5b2a1134f7494c0dbe7eca99ab
*91619870fc6e2a8d079cf19febe9342d5e31c48c51170d722ebe68d5268f80053ec2eba9c8ccfc
*6c5089976650229e339db9111b09aec1d18c9b189932753626b4d3c9c54cb0c58e2ffdd5e7913d
*36433bb005a93ebc4dac2ddd1bfb2dfde6eba7f0c798466c268dfefbf86996e8bce17de59a5c30
*a1e70e8925cf08ad00ac77b4ec2fa09b579b62515e944eb69f23180964e7bf6dcc5c5ed95a05a4
*7e7b79374871c993b15c3bde1f712ef9d4944668a476028856f5857f1fee81b99e8c57498bcd86
*5ad22720454ac5489d1cf3c7239d2782279cc30da7f4d9b89352447160cc304d39ebc72f3f9cbc
*ca3e9cbc7bf5f2f5b30f6fde51c6d86c93713c6086e2b2b93be5e418cad545ee9980a8f0b476b0
*38b275d33ddd4d6a8c78835e49d18c1029054735a9303c29fd8ae4b4cf2311e844a1ef41d67849
*d3d8b1b57e9ae39516ebc71f9910e8aa2548d67983ce08dc6654ccb9aa2b97d164d8934e391a17
*85eb60e663108902ed898a8a047a7edc70fab4e163bb7a8f8740b3435edb21068ce35fa79be3b3
*b00430aeacd1187408d523a687e0b8dcd8402b6cdf33304a13d237b2be582f1fb04916c385c8d6
*eb7c104dee7c17e57d828fdd4ee2281b51385fb53caa2f8e569cb63a36938303eb6ca6a28be0a0
*33179db1277af440c7ebb2628e8016e86adfad1f48f19d99ae16a39d784134b1418dd3cc105a9d
*541c9145ea929d894af0eca9c857871ca29b46e31583483da5f285b4d5b957a2b98f1985c924d3
*3fbd07e9376434348fb643c7333b6bcdb3972526474de63e1f3fcdd22c198e08cc88839dfbaa70
*db8fe8928dd7a5e4eec94c8622c3a701fc176936b437bd71c255b8acc0391dd79bcc8faccd5769
*4a84016fe007473c40ebb3a0e08a3a39c781851b9b9bf931e2d10cef85536ef2764cff3629c428
*c6f0949ed9003b8ad9f6f2c1d32767e68b09029375a137a7c7984b140171b8c1d522e334916b90
*de7a4adca9011cf716153b3030df85f42679fde643f2fcd9f7df271f7efff27df2c3eb176f9eff
*f0eae4f5879317c9ab930fbf7ff3e22b92beba0e83f4332dd79304baab6c3c7516ee8b00a768dc
*75da1fabede22d3bb00e06cd99d2ada7633fdaec26cdb074365aab1757c8f3eacd5986b4e3a828
*4243044d2fa3c5d5234de82435190030d3074c7cd566fc426ae1161fcf426f3d3ccb826bd2f290
*2f5493f7c0c67364e672b40f0669f13911e7b8ab7762b4aa00233c19bd7ba01ae8be2008ff5454
*ada9e31a5eb10b50e238534aa9ac234b9faf3777fb72cdb4dabbd1a72373493a5599ddec0a9c45
*38ebe17bd526b2a93d565f982bd9c1453f3993460f5bfcbf3e5799b951460879432cfe6ab6a8c4
*ea8690d58d1f6a91a96d973a0baf4cdf744a8dcc4fdd9364c2684d7fdd8a35aa2bca19a9af88c4
*4dd3b4f97efbb525a5e3b87d419b06897a8e1329b7434082e84d900628c73ea86ef815e804187e
*054d07be9d3bc0369ae9cf887c9dd0523fcf2b49b631537d7c07a881f857621712934e1f9c62b8
*b56407a74d75164e08b79f4e47df4a45fbded9a311dbe61fa8b9b6daf4b77d4c6d658077b43d22
*4990dada7822fbad8f14c6a27aed540faceb5575d29035b3a816f5aeda623e9a8e289763a286be
*f0f31e7b09b6e98d41b1b115ddd3299eebe0c17f20d32f17d14be3ad87c45f5bd2cbda6d2c4851
*b35dbe48dc76b60c5e04a060c6e9f4694470374940ffdaea4aab77e840b455b024b3c2062362c3
*72bdfae3d7b56e2df508f923efb6ab9e197bddd53b23315255747bfe67faf56fe9f7e8b7a30488
*677474f441ec70a3df4e9114471fdc93afb9cdb78fbfb54fa48d7b329527938979f2193ff9f6f1
*6378f20f239591f5bda93140c41947be03169257093c971cc85e4113cc8087ff55e943c918ef18
*0b469be0278a0c58e4c2eb31f8d25c9c7316a120f2648648cd66a74f457feabe12fcbdb2049c85
*17ab3bd5e7bac80bc77c60d2196a975ce4e48063ff727d3e677bd4dc7c6e1dcb6428234f819926
*63d5accfc9a42f36c8514633044fd32009117d6de046bd39e6e5e9f64cd6847302ba52ad63e5e3
*0c9287bb74e9cead48b6278e81a4aadd769dc4331bf1d5baa846530dc9abb125cdd4c8e0fd3abf
*c6aac5ad7dcbc887c1d10eeff7f826b1e9d03881b567f682b9dad62808d0c79954164f6184d00f
*6fb11334cacde7d2642ef57028e67e8309f44c201957779166260a7e3c3c952767a20aa11c5030
*48e9cd805c493cb305cd16b4e223a66147fc557e5a9b244232bc1e1173614b5492bcbce0f171a2
*b26acf71bdfca10409283b2fe3c737b0086bca25b61f352a4d203a08a4bd9e0ab2397264846f40
*34d3a04e6a19ad9f652b764dbdf5e9596a535987d4f074d81571a891ada0353c1bc683530d5a94
*c69ad0393e50e5cc5085691b898b31a324cbcb535408a35793a3e3ffc40b183619802631208b8e
*4da30b4fbab6ee776a2e87c12d5e20de6d582a90dc87830373c03c707d8dd9e9375d9f03b1357c
*a552d627d29a332ac23a63e97ae609f857d717212fa8093726274381d0f2a6044a3fdf231b074d
*b45a9ed71fb547c1dcb6ee2218cff4affa3298415f92cf0e539c5386b9f37c710dbcf241f21ece
*29982d29036afc1dc93aaff2cba219cce40f4a69c2ef5ef113a0089a39d4f54b72b78e2f55ca5a
*e32046e6678074f388494e8c03519e97a726a7b939370c3409851a7818187f508a637b0bf2592e
*bc619d53913249f9833e7e4e64935f1792afc6e617023ef0ecedcb24bfc94b2a1136507982008f
*3ff22f98389802bbcc0f921775d14a5794a3b4be6cf235334164595aecf9c691161cc5d07c3633
*a43533b21d9c8983bec2aa442b0f80151d277f418339da44b067f1047aa344e50465351797eff6
*d383e4cf18ce6e33e816be70867307225806d49970216f026a4bae61e12aac749a4b208e47f37e
*72259e5a3db8d4f374f1a1f35c222d4c16732ab8b9b537266578ced5ae4715e9d75facd333c945
*0ca32192c3c198048c74a5dcaf69af4d67b14c5161bd9e502cf7069b2527d54dd9d415d9fad23e
*2f7090ae6aec275ef0aa90dab034dade4bce96ba164331b6c23bb19c3e2a9c226369e09c4e7567
*84f275978707e87184e038a8356aba3b3dc65d1b816b3cac981778b32756a4231fb01204cd5bf0
*b53c1da0c8a3837cdba05de7fd005195cb3118424489392ae269fa3b0c205834e579316876d50c
*ffdc6c4314ec0b6a431b7d9aa8e6445e309e5bbcc141397eb7e5790942db1ed8d133b99f4321f2
*41c5e02e4173ca5095dc1a20443e34298ac919adb6bdd4f7b9d8d1a5a73165f53d472c30e52b65
*13d30c2fe58cc668f730b7882893ea6db15a4dfae66f2c77d829891bfd7b62af2001038eacfc14
*0bb245d2b2492d457bcd882e5253dedd86123cfc3f504b03040a00000000001742453a00000000
*00000000000000000b0015007365747570746f6f6c732f5554090003de028b490b038b49557804
*00e903e903504b030414000200080045545939c1a946d9e0060000111700001a00150073657475
*70746f6f6c732f617263686976655f7574696c2e70795554090003824a0349df028b4955780400
*e903e903bd58dd6fdb36107fd75fc1b9282cb5aa82ed31439fb616d84b1fb616281604162d5136
*1b89d448aa8e33ec7fdfdd91fab2e52e6db605689d88c7df7dffeee4d56af5c1c95a3a292cabb4
*61e2de195e38a976acd04da315e3a6d8cbcf024f1beeec6ab58aa268b3e175bdd9b0d7ec2662f0
*b3ea54cb8bbb4d105ea5c39307d956b29e3e71dcf44f4a51f1ae761bf8db09b34a3dd6076544a1
*774a3e88f22d6945d9de32ad36a5011dc64e304b09579c3647c0b88d22d9b4da381674a72ca84c
*99b629b3fb0e5c8e2aa31bd6deed364658dd99020210ae09653b23464c2f5a4aebf0a2cd8431da
*0cd23ff7cfdfe0e3282a6a6e2d3bf7219e0b26d7ded9d5ea27ddd5a55a3b36dc606e2f86b8bb63
*2b28e8102c360f586c4d9196d68d58efe1629061add13bf0cd5e79615640cab610ac1f4191eb8c
*b2ecbde928af0c4e180688b28b505e82017674e107ad99273d4604c51b0873c81586301dec0846
*bf9efbe0731e32fafa9d56221addf9400a58de23e7cc69964fd07348a961864b2b589e9f073dcf
*23c2ca4f8cc899b48cb3aa53545150207758f2eea021eebbae11cad96b10f095c15aeef6842315
*5c56bc463ba6498ad757eb5756b4dc7027ca24655c95888f313d5a271a826087bd308249475807
*0951df8a3e58a2cc18c3fcf579624d675d9f094789b55092657f61b42a3eec65b1670d3f221e8a
*5a0816e3967e879082a8b57053aa8402266a8a17463ba798da3bd91294db734766a3d8d001a796
*151c2dea2caaeb1018208ca076d0642b61f53167ba2243c60e4ed1b68300ffd146cd4285a29084
*60d93126600661f15e409a090e85c06621c7a188a02664c56cd7b6b51465eac3088672a6b47a25
*9ad61d99157f74424166c1b4be08c0220939eaada7105ab9531c121082094533944cdc48d5f908
*0f9a87e281305324a932bd758bd5899602c291951aac73643551d048c37de6d11051fa604ca821
*a4666a021c1849d91efdec14300f9502faa03b284f34d0379f06ee43edbe8f20b7c4705429fe1e
*f203e28afb3d876802760ce0beea0afe0f1e5a8f5b2660ea2f153bea6eea6d7dc4361bd331a583
*949c6f74d9d5626d41c1f90c000505a4ce71e58686c28a4cbd7584d608aeaccf479ecfc7125cc7
*4e1d1e8741018f7b300a658ab11ce2a54d294cd673147d22897a8b5032d8c6f4b4567b8b3db951
*af99e3f8c7e8f623793419ae8afb42b46e61e4ccd1214e50509d18ef010bcc453cd944e787be32
*1686daecfaea1d24958f73ac9c55ea357b6e57ec39ebdd1bae260b3365a09e6f9b2ae308093364
*05760d98299448df5ad4e644eb152fa8cd69207abbad67965fd17bfb85169e0c28e95b69a26d56
*28208cc7da66485d99b42036b8983c22e0abe7764107c6758c549278bb891d6147fbb33fb98ed7
*eb7412c6e4afa17ab7d0c6290242d7d1d8c24206330fbcbe5b3230ac1e804e5a6ef0feed704afd
*40ad20a7153f1875d307e093962a26dd65720b6000fbb27c09d33465331150051233fc0af1c9d4
*b90234342055b30368ee9d408bcf90ab6459f0a4c862c24cc3f9fc4e48ac3f9a1b346d3efcfd19
*8d5b9a4664fe4cf874f98c979455a74e50044fbcf07b6e56e8f6886ae20b864fc48046dd54ec8b
*5b5f60d0a7f66758f100ed4b6bde13fa30d8c96268ed52806e98db618e6e8f8015cea115079792
*3cc761f59b10e364e8975c38f30c0153f2bead394c6520773f17fc9a73be6bf65bc13833a65cb0
*60c037130286915eae16f9e001caa6d7f6bb6cdfce5445672309dd94aad2d8670f19fe56c32b4c
*9c2cb61b1e6703b5cf249ec1bcc7f79b7e6fe55babebce89c04fa005f692b07d65991fb5a239eb
*2ec0cda0428db328891b778277d759b6c63bc46f17fb2e7a0413cceaf785d7073ba423558f6408
*df094f208845b7852a47a7cfef3e3b19365fcd27e79b8087c57c7e1b22ad33dc71acb8cc085ec6
*b3023917264a6b850a68e9fab05d9f4b9dad4cc3f5ec60e0d521469d0be012ded9ea8b578b5a5b
*e8ecc5d352d4e448b488f330dc9d71635823ff256e04b42bf897ed1ee863fbf0c37f4495c1ec8b
*5419ce33cad3ff4492b38c83017afb092a6566c9bca8c236dc4bbce786be6ff9ea5d764aab856e
*5a3496de4721c993bf41cf12e34e97db0b6e64c55e1f143853f3665b72f6022260af19be944f48
*135e95b83a3292859df5bb193b37a2d9fa570e0f797dca1e5e00468b9f6b6cb81336cf0532097c
*1ec4668bfabf48e813465c24767c2b236647898bec4e0d6a9f42e473946536c76fd8162f810370
*b66cd6783eb2371869459b5cbe305a02ffdf5cbffafef6a2e845263c29b24d1f0c9fd0d87fd0b7
*8698c88f1f3fb20fbbfd45a4936e7ae3c14e3a6ae907bf71f2b542a57b55ece13dfeaab9ab64a5
*e143e9525c35fc4e94e233ab386097d1fc2d94be9d5c66ddbe7f06ea8da2f3f76c08e2e9bb647a
*b2bba6277c0d387f03504b030414000200080045545939b03f0decb50800004118000015001500
*7365747570746f6f6c732f646570656e64732e70795554090003824a0349df028b4955780400e9
*03e903ad586d73dcb611fece5f819147051953173b19bb8d9a7347b1ceae5a59f2484ac6aeaae1
*e0485062c42358029474f9f5d95d8024c8bb53da99ea832402d8c5be3ebb8bbc512b9624796bda
*4626092b56b56a0cbb95956c84518d0edc8a5eeb187763b6128dbe1365902329ac74349ffff931
*393eb958bcbf3abff81ab3cf5f93f7e79f3e9f9c2e8ee9e3f2fce78bf70bfaf7c3c5f9bf166796
*415668d39aa2d4b307d9e842551dbb4bd314a9f9c52ec6ec54292ddd57102489284b1077ceae03
*063ffc42fea72d1ac963c6f3a2ca9295cada923e6fa5715f49aa2a6d446570593e9946a466580b
*6e82202d85d6ccf13a24ce7b7b7b47ac6e64838bba309219c5966d51664575cb54c30aa42f4bfc
*12a44d532c4121550165402c329983898baa3049126a59e671255632468e521b99254ef3d88a19
*dfa995acc5ad9c731e1303fc11c63296f33355c93857cd4a18fa9f8e4487417fb4c899dd668566
*7882892a631bd7e16ea50c9d38ec89f1c751cfc73ed871c176169bb7cd1d4db8b1158d288179af
*6ba7c098f7c81cc097271da724e1839468e9599264a04192ccda3a134686a54a45a9c368b83393
*a53d8abf82c163790b11868e2297458308e0d70b09e952d111568bf41e9cf5adef7a460e668fdf
*3ab930143cfde8baffc11f8dbd8eefeb837dcdd93e23916674c9765e837a8eb627f034ec8ca6ee
*6d5476b423554f34e36e8333dde6799116b232e59ab5f581510768d5bff9faf9176e3812138676
*26010acbff1ea90cb60c3b797e7cb7d756f7957aacf628923b7bbd9befb0a4a72366bf5bb54a82
*bfcc9db6498427445b9a79cfdf4f2350eaa334fd6d55bb5aca86a9bccb78993197b08c233b4015
*50833b9e5e205e4ad1a4778cd3cd1cd3c011ce183bc9c9e7b96aab2cee1d4dececaedd995ad7dc
*49e6104c0e06e9cd3d960443ae52dda94d44618f42335dcbb4c80b99112df27f10652b592a2a14
*7029c1584636aba2820b1f0b73a75a33c4344136422012f6ca5d219721b8adcf516091a6aa2100
*05300592c0870d80de154418d73dad0b9610a1a15a47316bab520250171440d65a4eea21fbdbba
*2e419dc10c33dfb3c1463efe01e89866bd8942795cc70522db50726c6abac0208f471b64889f87
*2c9fa525d4b47073df39d9093eda964fa9ac0d3b21832f9a463587bbc8a936f49b0f20e6965238
*12776c87d8dddf69e15becc1072b9b94dd8aa3a2c549aa3f8b6eded9f0c1bbcd6d3f78495de804
*2ab2964efc7848e9ad306d1a8863103a93b5ac3259a56b14c67160105f2e3377a1988f21d616be
*3263b9d2b669fe3f72a1fd0688dd21e6505c77483a72da908a3bbdf001aaa3dc6a05af5af44526
*08a8b781aea88188ca6488bf3a0c0539bf16b2840c0c551d8be636e200be454300280520a2aab1
*c924912a86a44c2d7f95a9611c3f789fa6d4288aa611ebae39a48f610f6a6fb7f3f7a35f16c9d1
*c5c79f3f2dceae62b6f872b5383b5e1ce39265b65c1ba9c160c422e44b1ee365b3549106d66012
*507ece4a5985e33ddaac4d039bafecc12783aecb12508f1669f5f1ae28259efb1118791545d570
*86eebf86cd9b5146a9fadd7c24bb4747684d17f4c42f5fdfb097dee77737df7cf7e62d2cf9128d
*18a0d82fe7ecfb60da6da97a3ef7cdb40928132df1f737eced9b37dfbf3ddd380bc00285a0f590
*4742441d6ed1a5ef5d2712be1e48d7143f367a82e187da330f72bb32bc916f1041ff68b5616571
*2f19870899f96411546c003aaa665d1b477503e2a88fbd5a3406c3c515350d45c5847cc6a391ab
*f1d0a0237e0209adce6a5587af863c741d480c3d1c36534fd8f4cbf81ec48a80a4a872857f2692
*2227a7de1887916e3e1f4d5e635377e2dbbf9078d7bc1b45f8cde42470c7810affb9f1dd07f74c
*14246c1085967e210af7de8b8a1bf20cdbc7c188edeb3dec5689da4d379153c0410b2a1cecfae9
*1ab869cdeafcadd7aba52a8736eee0f52406ba20f8802271371342d600a2614b860d8803d598f0
*d6b5548c5bceae87bbf0bb32b47acf2953d21602f904ddbf87d1d444417bd21f00110b17ee1d73
*dbdf0d0d933ba3fb030cda32c13aad63aff70b5ca6d106f03987b5e611fc31b4907dd7d347f2a8
*83793e0cb72497574e9eeb415eb04f4e19d01ca3812c13ec6c4d46420d013dbc1d4c265368f645
*16fe25a2abf47d51b395b82d52f62786553218235186d3a17bae98950a08f3681cd7fd75f649e2
*701b034c468c42a834bf49a87f54a29c5976b1b38f1d5bd9a56a550366844e95a87304974f32e5
*d133b0f902ec6698562b6928741fa93bc7dcd4f2aff0c5611abd130ff442e1aa6181d171184e21
*df051c062664a95e6bd701ea4dec47edd1749370b0cd4dbc193dd1b6ae02cc876d65e8dd746dff
*dec42e8929635db92f2a18afc671914fe3a0eb9d7d3099bee950f5ee2e7009118dd0e5bfa10058
*19cac9c22104a66d47e42625e819facca5aec47631564297e938810fa7a06b59e278870e135376
*805248f1790da396ed8e88d1a843f23041383a8b2adbaf400b617b498f4dbee106b4d88a25761c
*1d81a19511b90b0d4396b223695e340083022eb8ad7086c35b3db8eba55ab50e1360ac14ecb654
*4b5112648216a514c80382b33ad8cbe1ff3d468f3618a9d6ea90464b58baa70993260bab8caaca
*35e397500417c9d9d1a705274c770b1f4fcf7f3a3a8531b1460600ac0db0ba93e93d4ebc74aec3
*7c648502a2705d330e77f3ae15441f6a374df6e08a5324d17749353aede3232e705b14d0d260e6
*94ca66adc06c4bd0006d525923a20d776327724a8aec095b5500d970746534836c944fa195cae5
*c9601ba0f9e195b766cd83ab7fa6d5d3f3a363c0e0b3cb2b587bfdca35b614a2b0d04da6817b2d
*c4168dba3a507cc734e0359b03ef29405aee43cf0ddffa1af8de8c611656e6f35e7b745e887c3d
*ed48a46ec5ea166d9d77e88e673077aab1bf1790d3a1c32b85c1c17506e90b8d0eb69321ff553c
*081ed17b977784cde7104865c1ed2d2fd8972f5f00a479865e5f4a03a6a3271169d34836381d41
*b0420e1beaf629faf1010a6ac76c360bba17cc2990c5db1a273aed9ecea1faacd4830c371fc2a3
*adc7b63da32396fe0e504b030414000200080045545939cc40e5b7600300001709000018001500
*7365747570746f6f6c732f736974652d70617463682e70795554090003824a0349df028b495578
*0400e903e903a556518be336107ecfaf18b20f7638d7ec6edf0efc701c85ebcbf51e168e1282d1
*dae344c49684a4dc3694fef7ce48726c27d9a35043882dcdcc37df379ab15beca0ae5fb5f6f9e6
*e30ae89283d1d6833bbb82ef0bd08e7fa511fe100cbefdf9f2e58fafdf3ebd7c818a3750fd9056
*ab728f3ecfa6cd6c13c3757307e9e0ab5608da424e08a5e985efb41daa2a7b93ead7e70c846a41
*693f734a79dd406f77611d7b87ef584c0fa533bdf479a2e1d06c56c1c5c886ec2873e1bde58c8a
*8c0dea2802daba11cd01b3e2ef7f221be75bde279f903ddd6e7b54f93cd998d5706ea58dfab055
*494f4a0c98d775277baceb18eec158a93cac1d0adb1ca4daaf8b84508cf1639ea411488f034835
*e63071268979afaa222899b280bc34d9f0d568e5a53a6140067794865d9b93b54849906b095ac1
*77a95afdc635b7c402f49be22d6cbcb6e70932e9430c49c2507ac6db2c721a6da8e89c10177e99
*50af451b628ca66547e0f5a0db538f79e62864b6597850d8e4f46ed0c8eee54006eea04f7d0ba2
*f127d1f767b0c8cee00f78611db16e02449092ff7e960e5faf16c5f1b2ba3c8d7c797bbe4dd079
*f21a0a08a586165d9364b8a340b16569774b64fcab41e3e1f720dc6fd66a7b0b32d6fb5ac1083e
*f6e27ff4bb4be37febcc8c6f452e923c419d20ce923c69c438efc95a36bd76982f7da6322d4b64
*857438d7315f7f66362af38c1359906f0f31b7c4649d06c8d8c1e1c0b4eb02c6068fdb4745fd53
*879943f56d65e3f36d3e8823f2526c99edd3ae78da2c3b3cf5fe6e430a3f97cf5491c1c480ba6f
*8d76d733abae71bf97caa1f559f1b889fd2d7e209b435c97d4dae429f9268e320299f951c847b8
*773d84916cd1a15f54948eceed6c9a06e1a4b0685b568e86489a1177e13f5423b73934c1d2dc41
*c0aea3092413a30b8f10a92d28bf0a2eaaa6f9b87d4c2d13016ac114f9c08745856f759ae4f41e
*b99db1a902130b532833479951496da54c555126acd60479b7c91ee03b66c4e520a3a49db4ced3
*f93a3b0a9a85a10024b13d17e034eb876d7896e860afe180f6aaa7670cf9753492bbce8f99cd4f
*2413fe79a663a4521883aabd1af2b7c3ee813d2201d1f1ec677aa9c24653a714f02a9ae32f6949
*fafb68713bbf2457c01278499a8eced374a842ed3fee488a31dc6a25f92387dfbf754d5f1aa18f
*63dee3a74f3c48d8a785d5bf504b03041400020008001242453a10c3b4dd570a0000001a000012
*0015007365747570746f6f6c732f636c692e6578655554090003d3028b49df028b4955780400e9
*03e903ed590d6c53d715beb61fc1f9b557425b580043437fb636231455642460120c65a46008e9
*d612634cf202de1cdbb2ef035291cdd471c5d3aba5ac83aeeb8aa6b4dd564dd3344d90f257ea26
*d46ea42201a35a34a63568305e7026b281924081b773ee7b8e9dc7ba699a34ad13573a7ee7e7bb
*e79e7bee79f7debc3cf37c1731114238204521e430519b9dfceb16012a9973b4841ccc3f35f7b0
*a1fed4dc8ddbbd615b3014d816f2b4d99a3d7e7f80dab6f2b690e0b779fdb615eb1a6c6d8116be
*a2b8b8a05cf3e17410526f984256a7de7564fc0e128ba9d0605c4c4a403003190909de074f2b90
*4d8bceaaea316e83163f6b5b54e1aa8fb079b10e88c51fab0ab1e64ec249c83913f9afb70acaef
*a2f01c29d2022ac99d04c944bea5a2c5433dc02fd014386772df641c6423511152814ea2811157
*7a17ce5eb1351ccea4e9f3163982febcaa3f961ba716dbfd778f4beeb52f746b142f45871f145d
*e392c35c795e146e49a472542235df87b5dd595713874768d3097cc3525c39be8b9567c58de59c
*4c0b09898e1be80bb1042dd14ccae9630a3471400237ae7171d8d5cb919a7de082f6eefc46cd0f
*903938d9da553305b59b6a66c143f8101c619d558e8a14c6b06a637c1bc6f88566524ea75faf79
*15c0e933daa88731387105e0070b08898d5a3a77401072733e21433ee00056883e130c73bc40f5
*b92096b0746ec89a95d343cb54094739c27cd603fe65c00fcdcfe2b2a385d0520896780f26327e
*fc112d9f0dd1e1724013ab9dc8b771b8614efe04224d39c619d0310efdadddc466c79c72763bfa
*2b8a3baec3c37c98a83227d742d76e2b4830fbe7deb2025a9a5eb61ec4b39698047ea23707e91c
*064078379a24fb02912b97c761ea2a367a334167e9314ec49c034c9c3e4ce4630c8cee45ab7c67
*2af8bd3822bf844aec63eecec4d3cd02859e47f320017d720340c4b272f9ab0524d7b915213b27
*02187a369ba0f727eacd0cf3c63c2ad34b01237f744751bae2071f9e643766edefe4daa5e205a0
*132fb9940b183fc8e519b90b9a5acf92a30883879a9e082d9ab063684d10da61f4dddf07d06f3e
*0b8b5524096671ecd611acdd5f93bffd6aec4cbc5d49413f0c31be629909fb95e2741d2349324f
*ecad3d82911cc39faa1b1d4f46aa673709a6e5e9d9c0cc13a6c5fabf9b9f3436d5ae8ef57f6f0c
*99f41486b7f470b3f71a6bebaa3edb7d4a879997ac3510c931123d59b469b3db859161605608c2
*8c258ec1a00b9c0fc4f291198baa484cb2c33a364a9766a2c57a82a7dc6ac63582c279005da00a
*f3202e2a97dfd0fa02dbcd584e1c88f3e39b36bbb47cec19ae87b12025f1cd064bcffd9d67e9b4
*c8cdaf095cb24e69b2f498eaf6f6762684bfc46303b7e04d873a06ee36e38a80bbc33873dc3190
*19ef63a8a848c70011f223efa1b9492846f54cc8f5d08f30bfffc8d101e6a869c2112e27cc3b02
*bec44f272d54d38c3b91254d42de1af8a533b4087aab067616274d8429b9aadfefb8065960873e
*6c2b7787193ff0d167a0805ab64c556b7a3700f69cc43c649683154a99e4324f1e7f35261e9746
*2c2a97ff9ac74a44fc232bf494435697ac28c5365aa971449c9936d4594eb07ada07e058421861
*29755ced4cd0e9961309b4bcc02c7455b44326c2f29842a726f39a56ae136e24f3c84aa9b14832
*da45237a5bf462a4e32a11a688a7d37cc66d8de636b284086f4345a5d70006aa7355fa5560e609
*5f1e4b619d085f42ef967d094b4f4274c849c7557246c9190a1d5b3ab7c03c2d3d8eab7bf3560e
*6d043e7ab22c271f7b861f37b2d234e3052c7e40becdd68cc3ad0f9abc304fadb4c90b46672855
*d7c2a591a515d4220ec094d6568d84a780285c03217e8879199b9c63aee489707328b5a284f306
*69452b30e6607b724549c1c48b8125f52687351f1d5784e9787a60180b60f348c3da0e7d88111e
*92615933f12284ed07d0cb90c445af052efede65c0acaa1a0b5b22cb082d882c2ba05322cb8a85
*e1e454cdc1fb56f07a0477905bd77e66f961afe595c4e25e3a3f1543e3437383eda9d83070747b
*c09f8a8d0057c1efe293b1ebc041b15f544b9c8bc7ae601142003f414dec0ff01b8fc99a55da8f
*b264447b2bbe1e2958d35913da156c76a538bb629cdd656d8be0d42dc2c44661bbdd66cc496c10
*dd5697cb850096f633c928fe36dac7b1737dc9218477ccd1dc73bfc18e8337016402c84ad5bcfb
*82161dd84e666c6a77c1dc3103cb52edf8f36c47c1bcfb728a5dada31d5642bf22a981b0370e93
*85497f0f12a915cd53389f1ae89e9ea905b9b1dc2ceece16d41ec0c6f9eb99128417b2547ec2c4
*0ea3a74c5a256206a6e105456267d586db58b5a59b5cbd56d2c55ae361dc0858ef163ce96ee176
*f93bfc7993b98a3bdec18e3f35b1bd31765ec81b3a001dea2c3d85911b3678632237f22dfb7af3
*4fbf6310ae446ecca34b51bd3f5179160dfb7b63a7697dee79d7d94fab339d7351c29fd3e5787e
*a9b679ccd6d9af9ad2e8b755f5923b68da2a8e02de540daade6ad0245818c399041135e851c739
*c351389509e52cef360e40368ae0d206bb29e60527f73e241f4e17c975abbf0fc74fbfde35d11a
*8f3817e0719a2e55c797d6739221fa81d9f022def7f7dc406be88aab6f022f5e3affa7aca89ebf
*e66e1bdc27a28b097d40b14ad35188d772d206ee2d64636785a1febeec790f4bc1750f96418771
*853e164b887d749a38aadda794d203685a238cc22c9d33a1446e8e29ca739b5c7d958968cd4530
*9174815d2a8b210bcb753d7d62f27dacdb86f7964bb0a372ae3e71d4c52e706fa1321d8578d78b
*17607635f82758c8ba67089fd17cf2043ed3438f7d00bc38287e2c99253ba70c025e997fdd6987
*5acadc9f95f9b24ebea8934774f2b04ec62b4eaefca04e2ed2c9769d6cd5c98fea64a293cd3a99
*d3c9d53ad9a6931fd7c98b74f2629dbc5d27d7ebe4169dfc2d9decd4c91b75f2169ddc345956f0
*ab46f679af4d6e77e545f74d60b8cc7e2f49ffc7ad4efd481708f27edbfc70017968ee84aed5eb
*6fb139dbf12663833b4cb3403d5b7d3c43d505045f8b0d416800d5bd447e41db4667967fba8190
*8b20077374af818eac27e4788eee24e8ead77fbecf20d87603ed05ea027a2d07fb36f007814e02
*9d03ba08741dc8bc819052a032a047811601d9819c404d40db8128506443d6d7cbc0bf01f44ba0
*04d000d030da21bed286ffcd78f288bbd91708f3847dc675e3ebb303f9af1337be83b0fdba43bc
*a785ac21ee70d0b3d38fc64788dbbd8da76d1eafdf13da1626952007dd6e3708cdd877615666be
*aa5599f7eff086027e4296aa722b7e7b573f79bbdd619eba3dc1a09bb60799ae1de2e27779f193
*3419226e6f602b21730cee36cf77f8a0876e279b0dee805f03741ab0bbeaed15e0833e2f652068
*65460fcdf8996b6cf6f87c01166395b13518f2fa692bf0cf1bbd61985c330edc650c7bb7f93d3e
*c4fc9838a0a7331468e6d947ea4fc8ca10cfd77bb7863ca1763c8bc82a9ed605dada3cfe967aaf
*9f5f0eba670ca07b26d022f8f8955e1fbfd6d3c6d4645d56ff34c07da88da0ae817a425408aef6
*b706105868ac0f785ab4311cbb58df4f8d0d3c6df46f67fd5a1cbb9af920f506fce09ff221ed7f
*067a6a0bef680ed18a161fcca4d4f99f53aebf479dff9cd63836ac75d43fb95045ff7bedef504b
*03041400020008006caa373a1b7c493a761f000099730000120015007365747570746f6f6c732f
*646973742e70795554090003cc967a49df028b4955780400e903e903e53ddb6ee34696effa0a8e
*8206a536ad4e63817d3056b368cca46783c5248d24989d8161109458921953248745b5ad09f2ef
*7b6e752565abd3990916eb876e5bac2a9e3ab73ab73acaf3a2aef33c5927b7e91f2b3df4d5e638
*546d93decd66bbbe3d24257c089fd47ab56d7b955487aeed87c41f9a143ac9fd0f78a256c3b11b
*da166696aa534da9cde4efd4df8f55af46c3b6ede15034e5aa6af4005099e1f2e7d9e11a413483
*e98f9756ceeb6a13ad8e1fc51b567ddff6dadf327dfe6d879bfc0a1f66eed30f7531ecdafe409f
*5fb8d2f708214f30e05b98b3a47bd8e7bdd2edb1df2af8332484ff37fe163c3f9466bd369858b7
*fbd9ac54bb24dfab213f365d316cef55b9d8d67a79334be0673e9f7fe8db416d87a4d817889ba4
*57d734ae6af6c970afdc7249b58387755b94aa9cd1ec77b56e13d5e823800d638b2169daa48549
*bd374b3d0d3004f9e6d0360fea2440846bd372bbaad7c3cac045ff3fde57b54a00de559e1fdaf2
*58ab3c5f0101fb413f56c3fd2275084c654bf8b3457cae65dea6d04ae7393d842d34edf0dc8216
*247fbdbea8b44ade69ad7acb0b0bfb9400761bbe07f928ea5e15e529d928d52466c79b53f2aa9f
*27aff0f576f2927eeb611b7d430f66816cc12e22e2058f97b39906e952cd56c14840450d9c52a3
*4810dd61c2f62167de2836b55a30eb14c300acfcb1a88f4a3639f427b75bd5c15a0137aebe6a60
*c487b66a865557f45a2dd2a7757ac52bd87905e18710acba15d0bd2f789fea69abba2159fc70ea
*14cbd15f7026fffa6ee0dd983f03248f6830214b11215ef5c9e1087cbc31ca0b379ea44cec1bdc
*ba4e13c420f0f7620fb0beea97f3608957c98230146d0f704d48e56de6bc448ec83e8b5660e3bf
*a8beda9d583ae85152017b18007076d2f6c9376da30ccf07b4109ca6e9ea47c0fe8217ffdd9afe
*ff4d715b08ec3bd98a76c87c06818e291bdd5d8ab6a63828dd15c0e2f0cf43b1076553c0d10433
*aad220ed1c516238406527f06a3806f88d0e07a21a70d60a4438dfb60d28ae41e7306501533c74
*7d02ca683b8140e3baa869515732536ae400bb3584709e5c8d5719a141b409c0160c5efa5b4a57
*29ee15c684e08314c3e640ce6100b3160c59e9aeae86057cb4bcbdb97e7bb70ca6c06a320bf134
*46a0f909ce9fd563d1376394186e025928d5b686654b342b0abb35bbd92c01bc253c14de7b339f
*5e2b01cd077a1eb0dbf7789a0df7301e60a4f361d59de619e220931d8cd608589335d7a5dcc9a3
*41579291931c8aae43c986d7070c1a4835d2f821fb6891b8aa0675d08b88c5888b433d4ccad7bc
*eb80ecb9f8b85c7eaa22f805929f86db4c3d3d50565b64eca23fc171dd6ac55b62190da93537aa
*02b68f9bd3befa10b940dc11e292ae6f7f0452bef9a87a321fa2b53c2424ba53db6a57c1c0d53c
*d0d781c6de8099f0c9aafa87fe083cf8bea835fcf76586a0bf35340589a035799de477eb58247e
*915ec52555219c718956759c1b30c6853b3506b1ccd57c3e3109fcf5886293dc7c219f12082ff3
*eae71e4b72b20a8bf91c1631d08b0c37cd618e10d33450682ae51dda4a97eb106f0e6a10a401a1
*106d97499c3f6f9ee5b0c6c2e313c1b7a710928bb854057a71501a4ed823e8aab3fb9243b4d2c4
*556095321419d9e044868bc83b77af1a51761ec024e7455e1643f10bcc304f77b5bbf0f0498636
*d9d7ed86359527f2a3cde122cb4f55ee634c3d64b0c1e54db201d7e121188b944f60951e947df0
*40e86ac5687c18878b29d0629119438ec7ec426943d45ecda775bf39f84648b49adec9dffcb1aa
*cb6dd197e81bc1be1acdcf80b4600c681dc41b228fc79234b0aad0794bf4b1232f1829b053c580
*7e6996202fc17f45535ad8905bd885fd81ec0460850684f01ee9502646fe01e434f4ba5741c884
*b889e56bb703c5517d54f52929ca529373bb6bebba7d449434ea3169298a50d409b8c08f2decbc
*e8f74756ac8023f66317cbf486c14ad2582da7c9f575a0ddacdfe76938d6522722032b338b72d9
*94f8e9c6f9b6f8b3dafff11e3c5679b92a33e462de4c7f28dc6a47cdfe6c1aea215905f6b142d4
*2ab008aaba2657ccace878e938b4b064b5858f4ffc5a7c912111996f320716fb7a979cda232ca7
*ef115ff07ea70a8de54c3b43ab0305abf8585435b97eb0830fa70f5fd3d1fd58802e47c1065ae1
*823daed423f91d5c353264019aa76c1f1b0c772475bb2d104b19c1b0055e01220331d25dd594e0
*6c340f401e26302e0edbb0aba5b760969e72d9ca1d789e8a2406a946ef173aa55a7860b5ddedd3
*6457a1238f2c0b8b39d85cb48311ab1116c41aca1850e4516d001dc68b20c0182b1ae0d7a4ff1c
*68fee9bc326c179b79c4741352ced20d9bb07c3de7a9f3180380aa4a86786f5ce8254376d41c68
*42c3915700826d8f60c925ef610feaa9386050c32e8786fd8d9112ab0603137c4d002f7af5fd0f
*18e79c97ed9644f8f7eb2f57ff068ec01c9f28806a0e1e8e73961a9805643f2721886ab3596058
*a0dbc7aa54a438f0f52ef65474c5a6023fea946c897bf97d737664aa81176a6a0c0eb11cc15160
*4044927b04623089a7236140f09075cde75ab849a487b06a17fa0a58f06b09b2224f21a21429e5
*465946642466b4327951ba6b0125de32d394d46319a7c34da91280357c65d4f1798e12f9b1c786
*17da5bbde7d9a905a5dda0d0008f24f288dd0df01fdbde88d788824457c4fe467954dfd6470034
*215e93dfd15a814f1ac63003a651158266b8969d241ce4060d5cc121e37004e815d5c33cd0b280
*024793ebac4f20a80780fb2bf3b29dbf81f650c179e85880e2ca4836424622716d8205a723de58
*f7d28b371561d4df340cd5ad5dcea8af2d5805645ad54305d215cee09722d01a6861d61f7aa556
*7621c1ba504bdfb7c7ba44166043fac309e4194e11c0cec04673664c15235b48f793931936c5e9
*a5e9759a2c0e5573040da1ab7de3d3988937493477d05585f030e10ab5a0323484c5afd152b8fe
*6b4a08933fdbe3009f647808c19e527858694fe1f0360d4b09bd00acffb95714eb2ecc677c6819
*260242a85d0128ce02a97e9459480be259b412301ede121afab6e6e085a582bf91cc87ac54c08f
*80297e190e356461f10010bf578a916a242861fb0a8f8743dbfb72c0273c60c9caac33c2496a7d
*44146455256ca103e4fdb1a135e95df82835603b9ef1b5168c076274cc272646436ba65960068c
*744b286a06a6d287c7cc8197b01922d60b92c7b275e1f0f868b8f728620f27fbb14141048baf3b
*a5010568455a2b4365ce4b3a92b428be0e4d8d90027124291a5c080f06324354a37a94441f9f16
*ffbe6f735e6f9eb7b7d188a04f9ddaecc9a5d16242e17f68c2903d4cc36d18069578e3a1d71859
*23727a1061e2c3bed3bd4b6c932328cb3e49e773106f9ca80edde034803887995802bc842124f8
*c13d655090c5002c05c6ecc9804426aa399a9cd4b680e893ac6338539cf8ad990ab4fca3dbf9ae
*0510ad3da23c0b935679c3bb191f7645ddc20c72403cceb59633729b0b95882589c14e6f3000f2
*4d8b92849cc5ef895443af76a09bc0dc0ff492895123b59bb6b936bca08f9bb2c23868dbe3e984
*6f23200b321388f4e99bd497018cbca207a5ba0218b2ed01a2c59f1c2081ad0e6f05020c0498b3
*c2251f7aed2179b887e903cae1501dd44a8cadaf1db9c4564482838b249e11d9202057aca90acc
*31226769a43a981e38f2002ab42db58de8837456dd1120f09396d64fd3164f7896784625ab2bd1
*d8e0b4cc8c5a49e55481cfccbbccd983a7c5fe9ee24a64aa5ec3c6f1f84587006602e6c18c12bf
*cb1cd7e29994746081d5d47e74a98ccc2401329729156f15360e28c273606608eeefcbb8584820
*e38f79071482c2d6861c2dbb6a8f1f1b751598464642ece985ef57b189e272b3f44b2e29c99c12
*f26b4a62f1138ccfd0c3fc506914a81cfd443c63165ad53b8ed1682f22f245f2be78806d74c088
*bd229452d8cdc0450a8ab0c8caba4185cebc089ad6a28897faf0df7fbafefa9bf7dfb2c5fd785f
*6def9343854443c7f0a42876b13956f58086ea602200b08cd2f7de3a146102dbc0e9bc2fe26c11
*ed03a99aa28e484d66c47d2c6e77f8e46c08067f400a46e9575dec548e6f5800cd28f8a86ff98d
*77cbe50a9544bf7091212147b80448d60312020edbd5e694c35b567b352ce0ff205fc4b515946a
*217a1223047931908782a26da9c1731a85b668686ea228937b9187fe760ca6ee96618c0b196615
*b31a557d5856cb81b5aa21cf139fbbd608be07d97df15105e1425806f6836365dadc7f3a5fc6b4
*1e2d703386335affa79f67c163719b726bf3837b7a170ef11ec5b371d3399f55e37967c48d05cd
*63ea3fa39c61c546f2a8684b744eaafd5e8bcb46a60a7a3a1d30669272c2dcc70533b7c7231378
*b0ced189c32300304d5b756db748e3a760f3dd46c9c6897c2e116962eee40b97638849b193ade9
*05d5a64552288118453d51e6889f85b78368198f65516329ca2f876c8fe1db3037e0c516793973
*fea5d3a1e2805955b742f95f8e23beb0d6685846b260870601d595911e9e11314c18ef26bc1805
*b01289cd9205ec27430323dbd56d312c23a8be48be472ddda9167d4d305b29070bca7b405e9c1b
*45d11c0f1bd563fc086dd8010f7b187333a10d620880bbb4ec78f46ce99f48981a914319d98437
*e441cbe550402eedb9e53b0085e6a27131e5559adc002b730d1e1f56ed04383ef76a1fcf81f84f
*f023887e03eef53f9cfaf074be1410f1eb3dcd284373242b1f2048e4887560037f609bce1a0fe4
*c190dde045824c8ca630d9641a166e9fc048d11aced32b7cbc92f37c018e7d96e6a947909184b1
*1e36621542f81d88528d8653afae391ae207a17c20c8730ea4cff85ede219825e31c6520c47c12
*36fe9c55cf302ce2528a38d7697790593fa15f4f291597410c09eebf14ec46ca6cf988339c201c
*18f371c87cd3a33f89f5008e1cfd92a2c645748e28f6d9f09fa9fe385db70667f945c526dbb109
*bee9138a6bdc6cb2e2790a2da7a6625660b1147635a048caf12c7b3bee0e19fb3d0ea338f27e6f
*ce6044234dc484a7c7da410e985c8c4389da8f8804f3737aa7ea67518630acff089738573ceb27
*2e8c00f99f8d6c3e0b484eae1b9c283fa57adb57dd9017fd5ea737b7a93f3fbdfb7939b61b8da6
*4477858d9d45380af94f2c40b46085a9730af987eb87f31e14d5358e6b91fc2c4e061602b02aac
*d6d31ff0443de5c7bec63ff04d0790a3341baf11cc22bf3dbf6ff5e0594e6169964d1483b55f51
*6241afe0f7519a58381a87890781fbb8992c822a554d0bddc2e83b3a774bb0a70772f7d1c8e3ca
*5ca034bac93a169a49336afc2263ce4d0ebfbdb99b823ec893c96ea7b76056a76df8d3ee6edfde
*4979da32b9e271a315c6b390e06caca5591219864e7c7cae594cd6b36598aed5ebdbf9d3fcceea
*74a4f7ba058139f6f05b66fce59c795eafa97468b45c513f16272c2fec4e6b292b621561223627
*f25c60b9b2a2da5519355ae8d8edfba2348f39986f1c2b7e37b00ca86012dc3515323dc38c8089
*1597725b3ba35c4c79629e96c112eb43191ffeb4928f51d4789e49f2fc5932b6c8de956562c2f6
*6fbc80bd0deadb748dcd459ad56ca8027ff66de83635ad61e346ed0bccde233c2b244c7ca2917e
*b741fe263c2fa7eb3bdcb929e31667ce2b934fa0d4493118c330164f33ccec71a2ee5201e3c196
*cc48fabbea82b0a897f6425aac933459489662998e4fba271cb54ed329a14675645e2561a37c73
*ca65b5293de696cc1c00fc4b260f66a349fb76051e036899c582acca6bb62ab38485c444ef92f4
*8af67bc5eb2d972f2e843c14ad25026cd7629826d66adadb680dd4343e7cb3d03b77fc4e1cbb0e
*38c8fb1878f46a6a46b89acfaff15af08c3f6ddad9f8c7f905235f6252f0de48b4d27943943e66
*4bdccf80261b353c2aaee1380462f745f21eef7564c9ae2ef694cba4e87f83aaad4c48769205e7
*728e1414affa60e5e5e74aa2795584a84ae726da49a239b222cd3c78ebc282ab5d54ec39e69fe0
*fe7878d54476f80b9ae3edd2c7e90f582f03271355b8204261fb03e67a394adaee76d79bd3b5c0
*e3c8470681b70c185044973dd75fcbbd25538c734a7b65bc2c0a2f539514634296fc5ce2882279
*9e32e791698e5c3c433e0d9d5f2e3d71403bd238e764bb8aad2e9f451182fab8df13debd42b1f1
*0a4bdf6e876d9ac881c10b1c9334702a181c8eb895a9779fe9669974449a8df7f5193ed134ac6c
*1b700e67ed7ca6a9cd9a712f9629467eed4b54f3223f3de0c28c1da9bacf43e698a1c5213406fb
*33d416c32bc61259744b6bbf9bba2653a1f3a8522972eb8f4de357e84c9344e0f149327b16b153
*e88ace0f5f9e6c482903a6198e51dce67b65f54f2ae51124343cd6179220722921af387c45fac0
*bcc777b5c7aae34ca4eb3bdef15bcfa8f2eb36b2e44ba2e193f93345859fe267c7e6a1691f9b89
*78d7fe52c83d90cd3930c2620c2ed56a79886b774194ae94dc5370e846319db14a5dafbf8c9236
*623d063afb96f8e6ac2519550c7b1765475e142f7f95cc11d7e64891041d1e3c4faea247e236b6
*803328db5f4e674b04d0b367eb0b67aa470fa6c3ebd77186521c11b6578676a2b2acb004212f3d
*aaf275b40932d0a451cc31b6e84e7229555ccd652af94ecc1da74fa99f709f4873a76e7eea82b4
*1905f119cf8458be9bea2fd4dba213f8f90397aad527c9c373029c4b16a5c2da9763d49ef65dae
*0837b81d42b950ba9daa5d2d2f86baa84ea32c83ca6d2c0ec034be5c250e8acfe525545a51d1aa
*05e6b949a745d5b94d921a9ecfff6ad2f8995f86656bbd46355ef655523f242830b51f52d789e6
*7e400e8e3b7698bba29d79a505588bd51a729b8f776dbbfe69be29faf90dfcfb8ff9cf9e0f46ef
*82a38782f06835f354bb2598bb88e66692eb96a2e0c64b7d3625982b8f401a2ca2e03a1870931d
*11eb765f6d49f2a46cd363fba98b0d9c0a9bb6e8c4218b02b61e35d2ab0776b94626b78cb899f2
*570963f1fd8791a1e084ddbced50e9ed02c0f644dd588d92ad6500e58f58fb9e2bd6e0020953b0
*41772cfd42a9401b77bb274c83f393ab74958ef4b479c1f99432e57c475bed88289d3533cce049
*df1b2f70fec7ef4d8d9049ec77fef5778034c4f0ddf84c714a660a5afbf03278edf07f26c440a7
*6740f69e5e04b337fe2cd064704d414e19b117c0b77c3aba86fc1ca3922132f498f8d8d9508665
*7133c91c28650bbe22aa3549303cc3ab81fc3b349075ec1f4054a032e5e075ebb54104ae106f7f
*2cc0625551c472227661f64692ed8c4fffc69760e5bf58f1f9e55c3bb918f8868e23290d90580e
*1e26a21a5965f6910f3779b7cd5cc4f98c0be2aff48d89cb8f2ed8cbc1992ccc25d020d9341dd0
*1da589daba8c157218f3b8204ff4a91bfa0658ec08c7516029c92ee9deba5f1839bab88e104fd5
*2179e88721bf02f2118cabf90d1b1486087084e2cbf0ac074ec0e8089695cb91f246d8697e067a
*5533fcb1ae89909fdde2f9c935adf80b2646ea928d35f8d3bf647fe7c7cf8383ed22f67766c82f
*60ffdf98ffff7fb2fd545955cc3e112a88ebfecf48887e717b00fbd5584224b51fca080cbd1b9b
*77cf787262d6b133677b37fdebdc3989aaa34717d4ae5eecd3d90b44de0d008d89def0decac80c
*b0f5cc142a46b7423c1e19907a170046172ccf5bbf5cac8ecda0c48fff547792e6b13b49379e7e
*4d7f525944d1da9fed541a9cfe564ea5336602a7d27cfc4b9c4a1b46ff159c4a47ca5fd1a93499
*b9b15369403fef54ca889ba9f4e6a73a9581e9193a9579246b3ab0d67d0534d6d356c27e85b3d4
*ba92975b94f6f5e70e566c2721be4fb0c7ccea86e5749a31ac7bc474bf108e1ef45c5611dc0310
*d5fc6cc29ff2531d176afa4599b8d82579575ba0f4c9595637d37f3a91ec544f1d41d49c403156
*85af980db46b82f7f6cb3befea398d342f1b5537c973afb049fae3b9d4920c890ed77e9bd1037c
*270f7039a5b882281ec0dbe2d290441558aa464b6de9e633ed9274790b6cfbbb50f6a4c7e17dad
*9ec2e26edcf7cd5b4c48d04329eca17533f4faa2d29411c2bc9b59f0c9a8daf642b6f3c926a672
*7863c7740b8023511f0f741f0b8f6e691ae36c012f95939b5c8ea56098a1b2b9294f19189566a7
*67a99dc46fd6b97d599a45f71a1caf47ec625e759b52f51dd542cdfdfa65ec89c5888833b284d5
*67eb27c545bff568211fd1e4b3850784914389af3f57bceaa2194592fe04836f929f60e80d1c84
*3fff9c527b1cbc7c05b490cd5cfbc5d80e9e6ffd0be5729d8eaec171daa16cc57ce49385ba28a8
*82ec84f4fa3a0d2fed9a0bca65a1ef61b5bea0523a609286ef356aecd1a9ddd57c29942e5ba531
*838785eedebd55cb3ac942adf62b7cdfdf8f951ad2a55c4983ad9209c1b927cf9872b7048d4a93
*3e04949ee7aa49b9cec84d033076645a1638e3cc3f88ddb521be72129ccc80fd8c0a2e6d1ed3c9
*14bede9dd6a3ca4618912d50f3c06696b6c6717abc09d6f55b6ca21532e9741d1112a46a8e6a36
*5504c80584aef03c4fb3f43a5d4ebe13a01be5c23c796e373f4e09337c8ce2ba9c9c0647837f66
*4c55973d336d75eca80cccd30af0b62cf59749b39f7e5e4eaf4275186a9f752d07a565d149ab2a
*8ed3b57abd46493b3b48f0bb86559f1d8348a5db80cf0d1af7397ade027bb619ebfc7bea4180c2
*86960e55c5b454de8226f97c82f6e42f13f5df4ebf0b9e05971a8383126bd64db50f0a09d0e316
*30834a16e68d9462e9a9c07381d3b11afc5ba530f7076aeb25174cb45cd504ee6320de14bd7dd8
*8f520554df1431c6895e0ca3c3e9fcee89e0fdf935784054b8f2344c05d3a71609af1fc1e08c4c
*d7093ee6f090d4ccefb0b413465f60d79387468357a3c80c1d8507b5c266d6dc1d98414d9767d7
*c1ff6e6faefffd6e02175c17f845625ab154d809a3c7ebc4187c0bfb2187e87ea6f773d41b1a8f
*4b7a354f5e45bd8483b6dd533f6cbe48b708db6aeb1d5d2656c34b6d555c1e9fca25d8ef7b8366
*9469191db46be13624c19dfb71a4c51e15a9578660ba61dd83819925f74750ca0966b549f0bd71
*51d38ecc4fa0bbfe3b0d17be8147ae354b1959b5bcc2bdaa3bfbc41ec529b26459f4254182d788
*a9e0dabf7f3ddd0c4492f15e1b0faf55d5b96631dfa2b9f158e9f11bd0f49e25a36e36d4aa9b0a
*472430578437d7bc3e28bc4dea8e55ed3ca01abe2e6097342f757d22070964989d197f130d172a
*6172964b6af7f82cbe1c26b8d303c909374c60d438f846383a0709fa131e20a67efa2c1c419192
*b0b53466a1ba4769cb321bb927dc9fc5f27280e33e6c3563ac373218dd4a3baee43f070c573d71
*cf5cdbf92568cde05d12b045f1a96d47a4e87a8be15b6672d38dc6dd0f890b3b2f247884e6f8a6
*f345edeb404152984ee63810b887197719a238a3df04c8dce19f903b6cf0c1b0ea40f2a9f70845
*4360c49f8b132f6a8cfcf43bd3fd4cda4c05eff79a47614c50991a69c71a6197060f25386c8488
*b84ba920c175b5a3ddca3b66e1adad912e9ec0c56b10e4d73e46d84599c5b5b4c9eb4abff6cae0
*681deba82052f70d1c36e54a9a26da47ea0923b21eb15a1b7e25a87d923226e7dbbed57a7b1ce6
*d4d2c6c19f71eac4eb4b82bc26ee363716024e3200d35a8c186d0bcbcd2038b0c6c510beb31470
*bb8e389bfb4e4408c08047d0b4c670d002ddb29b71b71c6c7267cf71cd7138c296e90d83423a0b
*2e1ab98696a621a26d0d99ec8e0df70e240eaf868a3b607057386be1f2becc654ae2362bdbe3de
*93780cebe223129c1b644a98d997bd714ec24b289e6b9762e01ff3997f2e7a0dbcf06624c690b9
*8da684b6777e72e5d41e7dad8bc288f0da4649986529e6d97c33bf4b39c28d37dfac20a58540bb
*4959a8223976cd59ce88327528ef8087babe2a6c9fa6777663445f134f00d6c48ee403f5d84b6d
*a780ccea013a715d3222264d78ea73db40706e0aea343a21f80d91f9b138b1774f8102d26a2425
*268961d21a5e43304414b783a33680ed636342f978056ce6536e3875468481a7b99fee180e6635
*bce4669a895a62cfbcb07be9b5272bdbad517fa6e3cbc7a2afdaa3b6fc449915d3b60c0f4038d4
*78abef34f661b41493097c8c5264d2801f6795c2ae7775dbb2372ab9bfd0dc24c6b1b643f82525
*7e0b1289337a73b3c41cb9e6a69eb572a21b826679b9bc171fa1ebc5321306a55f5fbff6be62c3
*8fa8c8d54c6704af93a90a5e1a6660a3160afc6b38c099646b077838c45ebb5bdb2d9ce91f116f
*29c30630991cb7f1a599896629a3f9b397fbab846b120b5113b1d1d80854eac63c736559d676c0
*2ae9db17168af23bbcd89d8f15d5df4841ffedd858c23002e885b358441ee06ed111c62877b296
*5fb21839c1d3595c04d7537e40782a4e56c964538533dab379c0d37f79f6ca7430c44a0ad2a774
*feab098332d2a4bebe1d7f47c49c9a399ba300e77a69f52c51c37615d72a8c0af5bdfb5de3500d
*879f42e3cb37529d03f89f13f7072249a3e65fbe748e81910af78c1a4378b20f8b7fc5a91aabf5
*303134e8b0652b07878d011d468ddc627f8353e300d63120b9ef2b0a92f3b76ab8fc381e1f9dea
*b1f39bdf1fb6edb0af21e955bf29dfb883990b68fbc501f8529712278d4fb1f6d66f80d739f3cd
*f64b739d4801dc43d762f87b359b8e77fb57cf2cee9fe5dce03bbf16d329624fd35e85971d26b8
*923a0247d71dd8d3c52f0090b74d32a6ed97604cb1d7af3d398eae2fef6cb82d96a289c65df1bd
*14befa13974edb0b77177060e5ddef1815dbfc4bb9ed078fc7a2ba0bb269487de017ec78152201
*8b913dc11d812882d7c44d7ca9a3167deb57a11f424bdacb341d00731ffd669a6122c62fe73847
*5753dbcc3af066947e3105536707c56fb235423833a07970337d8adefe972b5863b878c0cec0aa
*d114c1a432e6277274a7a9ef93069b3f3255361326e68f5cceb0a3af271c38a58bc18971865dfa
*b57e3d702b3f621f4964db1edfd62d0fefcb80319dc5d93f8eb6992f0b616cbd9120ad745f3585
*631df002798d137eded8cd732e9eddf96a421e2aee20e80eee29a9b0be9ebdb72be41b47435d46
*52befaaf4806703fd41005302699f4221e7bf63bb588cf2632cb975b0b527349797a132831a91f
*31585e69cef6c65c74ee6ba44cc6d6c482109f7ea6c4f8f2dccdf6959e5ee71577225c056e00ee
*97ff5d4e7cffd4ff02504b030414000200080072606f3978203cd821210000ad6c00001b001500
*7365747570746f6f6c732f7061636b6167655f696e6465782e70795554090003081d1f49df028b
*4955780400e903e903ac5c7b97d346b2ffdf9fa2a3595612230b8624bbe70e180e8121e12c01ce
*40b237d738b66cb56d656449ab96184c6ebefbadaaee96baf51820b9734e88c7ea47753d7f555d
*1ac7715e1f5f3f675116b33829f9a66245b4b98a769cc5f97596e6519c643bc77126c9a1c8cb8a
*89a308582ec222aaf6012b79c0ea322da252c84f69b2be1730b1afab2485c7b06c7e80dff3cd15
*af02b6795395b0dcf357936d991f5871b55b965ce475b9e182a90d6ecb6771222a5ca4f93ecd77
*9d27212fcbbc6c063cd5df5fe0d793aa3c9e4f18fcd0a47d24f6409b1e7b88bf9df00f1b5e54ec
*397d43738cf130c01c4bdf6db343546df6fafb0a4e27d2a8e293c9c5f7df2f9f5d3efefec78b97
*6fd90cb8126ef24391a4dc2bdd5ff96e37f3e6d3c7d3ff89a61fef4eff6b192e4efdbfb9fee487
*cb8b67f668e0f3bee4db77efc4ed19fe33779dc5236ffeabeb3c6430091e23cbc3e7fee48455fb
*048e2ed89e979c5539db261f183f441be1b24d59c7f191adcbfc8a6720b1ac8a3eb07db2030eec
*f6150860f2fa97d7cf973f3efdd6de9e8eef3e88181231736063e704b77d089f1ec0870777a287
*efb277e2f4dd3b0f46798fceaba44af9ccc19590c30e3df55db9905c65feeba3c5e9bb47e7d1a6
*4af26c26f6f9f51258faf7e850dc8f931d17157007d8124db78bdfbfbef7076c078f69ab77b092
*3ff9e9f2c5f2cd931f2e7ebcb0a97581a9a7a1e4e9e2f77bc11ffeb91b10774292d3e4e2bfdf5e
*bc7cf3fcd5cb3730d109aba80c771f19fd7ffdf11e7d60e1c7a4804fbb8f4e288a34a93c7f3259
*2ea3345d2e61d25c1ee4b5b488e759cc3fb801735103cb5c2cb779b9049dc7afc802966b7cb2bc
*4eb22413951bc8d94956f1b22879b594f3965974e0f0703199c47ccb06667a38c297da0832bfe4
*555d66cc5b476064c5f13d2f0570d26779c9bc9779c603fcc767400d2b72219275ca59c83f7086
*cba0e9d242697ecd4b38137e19d22f70567c40cbb2e2b87c4fcf6945fa57ce4bb6726ac8b3585c
*27d5de73717157d13736048ef2f5bdee40bd9d22637e3e3dbbbb689ef2b45948806c2a6ba96971
*7483e9d93f3aab3564d37ad37f9e4fbf59dcb4dd3f16f254a5e4a96229ae21a501c6ba4cb26dae
*65ebc17f6a4bb1d9f303b046f0128603c7c80382f860699030b8c5ffd4bc3c06e040a2dd816715
*6cab7d63a83fd07a138330e533c33afb4f9d57dcc355952aba775c7f3e3d5bf85a0eee89cb1249
*f4b9129bb1177ea1679eb8c199df3ba81e2c8fdad162a42c607094288eaa68463ad5a8e02f094f
*63640e2a9d74d8727eb2aed1ac59befe0d628700af1481c74437c3d61c54b286b802df440cac18
*55b1553883f241a64b5f0cdbe13e786c93de34df44b8af245a2ea849f7cfd991c8c5099a757ab7
*567ba42f9f31d3774bc7e1e9c1bea9e1f4c8563e93ba412bf7ace1f823998c4b85bb32af0befcc
*6f29076d8208cc639e6d5035c0e73df9d7ab9fde2e9f3e7ff3d65aa96304f8631cb927dd865bfa
*83641952f8d7258e2bc52ccf9a25b5988167fa2bcb77ec76e8744db7a087292556b6facd029f9d
*30dcb300c5e2e4ac3fb1b4eb139471a78da5e0a076ab13a0343d32f271353c5a27bb3aaf452b3e
*e24f335c59cffca971f210c1c0e7f1d45f4c6ea4d7f68ee0e7961d673c141cf44a9676eab98808
*b2bc22ff6d2b893aca67ea697baa962a434d89be807df7fce5e3cb5f483f03e6909f766c4595e7
*3f616fcba3a54539e31f2a9e612013cc43c106148603c6ab4d288f76d2b800188be26c03ba157b
*faac85f10351a7af6229cf68ece2f33975a3b84d8f3b5fe0b933e3a0d2ee79dc37d02de0195a5d
*7ff884593661fe4bec33627a756da18ad24157d17024cbcb4394261ff912435343a1df6401a166
*84f94c933f515a4047fe728e4a0825d50d593893e8a47593b337af7eba7c72a154b000380ea738
*d0b049cbb5ef79c64b40ea2c4a81820cb67bcf3b262f58be0516d93a8ac4480d7e09b1f91c956d
*a5c95da1a9499e424e54f1036b8577cc6bc881f21a44b5012c492bac5656ba1376f8eaaf5628a4
*04e3261c8183e9838cb31d7e03e81ed1be94590ee2cdf857fa68cabefed209e512dff14d548307
*11f981eb24104e08a4b46e3212480c4ebaa3242218410eb5060f772173a2381380d7aa7d9e4dcf
*c2b3f02ea42d0edff12cf9303d7c9802803ff0729344a923cd5d4d7e9383b7e16ca78fc22308d0
*8daad36178731ae6b57ba143323653cb9964044cd381d1a14f608086aa4ee4f82163cf3350324c
*59363c50eb610412455d26fd7821b4b401f3243b902c8f419b153fc171e154fe1e9157b354c95d
*60672a72a04812e468a607f6568e75384d25f865a558270c3322949384f800c1c0d8b323cb6a60
*73b26966c0ef6bf4dac88244482248d5ea2c4dae787ad4d4e50a1c45e02100d302c041279c54c8
*970ac8169065a7f0b400a3c82a9023f02a07191d90f2bcdeed690fb59a3a7e9a832e9775c69a72
*037edb66f98a81bb9cf67244b4e50e299a30d66a744ec341edeca272b3478d97133c41a80c37a1
*d0e987d2880b4c2a8c08a0d1f2d46d2036c6ced6ddb43184181014b83127be4684d561bdf9bdf3
*4527d8601a0391a5f067b36f898ac24a688ae3bdd01d8070ca1d9f48264792f6650c520b882e10
*ab3cd8740a47485206ae60d2c448a2ad8cb21df7ce02da1e77f44fcf8c9d244834c18c1df95b57
*dcc67ae04ef85b9ea8f5e6e7c5c2ef7d59000b8281bc8c5c76fbb1836fdb5f3a739517c721eae3
*c4001497172f7a559307defcd7878bdbef44c9532a9e58b593c5a94f8ffd87fd0a4a0acef44f97
*5128aa6d932c5e629007b79b2e61bd2b21d392026cb98d41cf60186c9dce9c3d38587ce6906ed0
*57bad6e6309a8fa25ce1905520658681003228d164f32871558dca187024442a12a0c13376c59f
*2adae189536099917608cf37306e2ae869e1815e8404b7698aae126833095cdfc29cae3e08616d
*5a06a872f5599a6ffb4953433996c05ad281d6d1ccc6cca449f388c5fbea90c67c93c7dcb3932a
*df6ff904cbe25e9ef3a0da3ffc01a3db6be43ec424fce2a922973254637b083c04c0779c0824e2
*ccd3c3f3af66d3339b5e9d54d2b90447b744020960b4dff5110319e55f3a2f049b72099b514eed
*bc965143d617eedc020f0beea5a8f23c15f09bc36e3169fbba00b1d456ba5c06e4f793927b6e3b
*c9f5e77717a11a334148b74901a230b338e65d64ef9332cf28796e34ffb1edab131c290b056213
*8133bfe66be2b39009b5218f56dfd1d0964bc880aae5d2133cdd06721d2c1780455555717ee74e
*712c925046cb302f77774472285214f43e17959879ee6d3730fcd4eda8dc0176b87dfbea7ad2c9
*aa8d7384f6b67212ce69e5890fc2861c607efbf99439779cf939baefe64b2305bce31ab9072d83
*2cc9788ce350ff7effc37ebce594428c3d56086229d9d97f0e6034bf169d3aeaff2a5f8e1ea029
*6a07c433d02b554cb596a9f225d2891552c8705b09010c00682ba8862385445a0b81ad4c00ffcc
*9e01e0319d1388f7e27d94d6045c51e00830a316f3695d9098e5101d015fe9c5008f68f8abec09
*f90d76de67234e4609e8a94389f1b814e6f0cf028efab6acb9b91daed8d6a68d42a12d11c59226
*c56b6a5b23fb83c3ec1088d683324be1ffde40d5ceef79169ad1f72c8a68a20be62df3ab01aa47
*c8b20e15f375bdf39c6754dec38875cec0a590b495df3509c1a860b21f7f376565ea74d79d169e
*d4db187480161be21d42c338cfdc8a659c4b6009d0bd465c0a7630997cd1f97b240dcadfe050d7
*0d6c73cfb9e4746f6670a5097fb0120dcc0b9eb57557a7094374a985fc4498f7c6cac5c000e800
*bab2fa956345a42de2182afc0ceaf4d099fa0f8833cd71ed700fc1c765d295b16db88733423408
*771cb0c126cf30179856c782e37d88eb6bf4d089fee126cd05f77c26ab23158534cafbc0e44082
*ca5e984a29c778adaae744ad2aec41da13a7e81fe43da6682339de66e2d8122836804f434bc789
*9860dd76edb2b8b8c3acaf2abd6de0622476e5fdcb57b36fee7ed3b99c901b5b7e80d632f0e1e4
*33705107d2115207a3ebdc2f900f9795ba9b60c2a887425dc465fdbe3f6f9c9774ea5b40f219a4
*853cee79f49346807a0e99bf14490ee62fbad6a8ab48fc039ab7b7cd86ecf13a2a33cf79995752
*f195bb81b1372a09eca0574f20732a71f12618c803740556217ad393405f5259f4ea6c24d3617e
*4051c16074ccb83c8e1df0a6c371406fa2d2a86a1fe08a905ba1e1195e547bffe17a61e64f6ef6
*fb3d7f3dc2bb4157db2882f296464cdf427298f6c40f341838c31bbefe9a9f751366e5c62d0f7b
*103b84b1efb217a8ea9099dd6202b0daedef5ebc7af2af8ba7f089ad8fe02369ab29a195779985
*0788c4ce4651027ec3ee14f070a75bb697ee07e1560d61b819e9903d081796788b25b33fc92609
*ff971da53055c718d12b20d88a4baad1d72caa8d675579ec28e2c870b534cde8dc9b4c91727764
*8e058b9a73d22e815c6d8c178a15f2aa548e6cb7c0d41b351bb419bd9c2ced76d250d4f4015351
*6bf976428a550f5ad49fcdee8d5fd551c26ea6246268075a08521e7f80293839d4c512c36118d3
*6f4b4286a75a6510a3823dec3ac02209f6f903485b8613e2329a65275200407eaddc31822215a4
*5521980a7154873060b496a08c04f6c94f985e4c6275b049c139323ec18215b2386aba87087975
*8b62b0e60dc1b5cf675db043a518d4ccceed3949ed6a8e7ad05d7b615caaf796f287a0725b4303
*6d92b78a270dfc9175afb3c5b0c19c488ed8dc008f104122997ce4b2024b697007e63407bf42e7
*874550794722b7bbbbf00747cbbb421aadf2734fd3373ca19f2b8690e883eca33aad3cd85c83b7
*e0f73ffc39f274100077dc3764854d608235209499df006583d8bddb6f62a38848d70b084b2519
*5d85349078aabe85017f124791ae7f79b18519011a8e1a6811e06a8413e9322413351615b1cc28
*0915ba1a3e40379694ae765d8b6be0301ce17d12cb9c66c4c2f0e419bf5eaadcea73ea92c3e68d
*14cad60d30f3deb8b67d63a8754311306851d4a162c49de2e8b6780c171c0d59c0def1d0a4b63c
*9db927d86b774b4c6f0917eb5b28999eda8d87f89e856036d954c528b11b3c591b1a2d060c29bb
*eebb0b45bd1eb8748f0eeb38628773a309ef963839c4dfc2a19c87b70476c5e1c90e5a1583af83
*7b7ed057859b908c22c571540a06f467026b2df53ae553aa7c60ea9ae5d9d4543561167afa9c69
*a0a1a1592d6300a4d9c775b0048b9d41b7842a7983658342c8802f7c862a92d7557379859bdc6f
*dd81dd66e050350acc4bd52de350a6dd934e1f42834f901e4931a03975a94c95bd012cdb16f394
*efff44d1022bbb6277de418c72f53ea424e6f534c179a3c5208f8b013b4ddb4a80474e05eb0155
*7485b5b3eb3df0cd774694c0d6d04e686c59431e43efa1f8a3386a54743fb5203b352741686ec2
*d82905dfc1728c1d8cb0a460ae71c58f3d2cf20c19b286698443608b46558059e8c19aabed3f41
*34b85dec9ef8ffa7fadf88c2ea34c65207b29b2805440473dbeb5f91abd4809e1af1afcaf3fe89
*809a25796b304485074da14dacc8a8620395123fef0881e7fbbd6390bdc9fb79a2cbeafa2b3916
*9063a66275cc059aa43ede0d22b1b5315f575192f5d5102bff0022d3949766738c9169738ac3fe
*7d65a996565bac19ca0e70cebcc383c5f9508555de6f3503472f749b3ec4a19c1cfc5f9c73d9b4
*25610ba5e7d67925f8efac2aea02208d79fb12d0c27ea818672ed1700c7308c38f830bdb5c613b
*b662f34604e46903a399a5da16b6572cb9ea9374313299bddb7f73e5747fbc06f17394267184b7
*a7d4634f0488fa4022908509dd44d465f946847bfe41b68c7bfe8387b8d1fc9bf301080e14f74a
*7bfa0752356c7780d47478a3d12ac12054a0cef7f7ea48e07ab6112c1acb1686d3f1fea8d3e1c5
*eef76f3e7467c52367206969c40819e292d4dcac3f6064b273c1c771cc56f8f54adb26fa0169bd
*d84e82c6abac2753a7907e880b334734fcc860f4f3861192be3452456a2357da62f9771fbdc7ee
*25acd11e99b3c311390a8af74faeee133a972f4d8367a9b32fccd05352a83bba00791c5aac53f3
*7571c6f9409a0843c7ef60f4de51f73d1a94c9a7ba77a92528c3ee9708cbeab269a4a984c369af
*3f813a7bc07418de0285d8f6739d208407cd81ac45ddca00a3a8ab075d7779a300c3a82800c477
*bcb5f6bae4822cad4328438a421df471ad0d446b1aba02d9cc359da21253294af89dcb3d938291
*4b22cd8cc01aec8f5d5d364a78225ff9012633ec511916c2e1c0e30478931e0d14dc8fbc378126
*758a7e70211aaeb90b062038a8019863ca23b04ca4502a9b7d628e152659206d4064c09c271a59
*b477a42d7620075b3a7662a05300a5d1727bea99407ca97a31755c3f2442141ca2483c4a8dd780
*dea08f699f58c0a7471af3e4056fbbcd23dfb8e0c26d64ed75045dfa237987a1a4daabea0a6dc1
*3710df0e0558acadb32fb0b647759a3b664bc20a6790f35cc959ab4085635462ed70d0e9b7a84b
*cd41acbe46a4be5a5db6f463d327f5e906d275087a3f8e0a7551a2160537d7321361175e94e0a3
*d6bd4941c9fa9b44aeba3dd364169db759c94b421eca4e43b929b55c51657098446a8bc45a9f6a
*1eb48a03344fe76f94bc21a96687fd6a45d939923a55c4c1d2d89b439404a8ec6dd7128624740f
*05c799531819e187254ed997d86308c92164be1103e2df630be26a45bd2a40c30a5b735b8ed555
*0e7025c146dc23db407c416c1a613fa248622e21aa12307a26a03f6ca507075602a46edf61ce8c
*caaead117d422a813438d4f13c562a2554dfa4aa32e7dbf6481229e21656678da7e0c391455bf0
*e2e61b9caa8d58abad1f8e9d90940a5668b48c046a5ce11d955b907a402d36c70e360536d6d966
*8fbd8871d8db01f559cd36f80ec4010beb35198fa155ada1e99e515bed65d62f7785bd7e8e64d3
*ac7a35545addc40276313ae248032b966f36358c8c6b929ec1b2d07408ddf42f1104a9b30df748
*7e97831ebf7d6d0c7ca30157704a0fdfca8143315bf58352686b7c91ea0b27ee0c5c0c61f54e45
*87a59e23f35edac678fbc8f2823754fbc65ed6ea1fe68672df70c5cd2277c7b32599b2475f376f
*ad056324aa8488467730907191a6ee9789da21265f8c2a7cc07eab45d5bc16528d1160b9d7710c
*d6bc98dc0359301f987069d621e8d27498c3eafd6548a86a6ebcbefce793195275bc6357366ab9
*000a2f5db7758e8882dd1a5d4ddac670fdb597d0eab68ab6bc665dd279969e06ae768caafdc248
*6a87e662bc373634926bb96080e16fc3091bca5bed40bd29a17f8b014fa579b1ccafe437dd9641
*7012af28f1a60cc0f0caa24eaa08733a8439db3a056ea6c8d59541c6cac00be6d7ec809aa77083
*fdfe881d88b437b2fc7ac611bb46a8c19814c9b2d8aa3de88a6d53ec8da5de50f9d68129612388
*aa345002777587e1c9f4cc6f121d89e8226ce8c4d703daf8951a114257229a7a909011a2c3b426
*c0d9ec488434f3c0400abc8d3ae6122ee285e6659d95062dd86ec8e9059d6b7ae100d3ce66b15d
*5e550880311d40b29100e2d9aa418ef89e8e0ad38472f0b126d6ead930e8c0cb5294bd0a59f2c0
*593e12c5fb675cad50c5e5199a5867611422526a4647a8f4bae3c0fb61b22b523e6856a26a0c56
*dd65495ed70400d220542a29c2fe94a5fa8e68d5da44b3aba132556334a44eb49f7c530a6288d0
*b00f5809fea9162dafa91f0143cc6a65d61c805b7e43927acbc68ed143f787a63b1dead47b439a
*adf06faff666e4145709a4bdb1eca9b5aecba93b1ce6f42bd498e68c60b5fb3a21d8486338e474
*53089839072b9e8cf62ee80452552587c26ea7c360367b7af1f3c58b57afa9c3a0b96e6b45377a
*e9467bea3b0f79fc4f5c98c936ad3738960e6c481f6b498df0650f925dd6ec2d28779ce328bc7d
*3e1b1c89683bc96a3eca0955a4a5737b1dd63c30df1ed4552569122340c5509ceff0bd28d9c22f
*d566fc38461d18eb92191f8fbfda61cd64cd547b1dabe1641cac196541dd03d538fbc1de645529
*1f68801d2f9a5b5e8eda77a4fef76da61181aaf89107e89402875f56be81bcd15d6fdc966e986f
*e2c567dc12fca9ddc7bac82603c8aba91fa85b3eb3f4203db204cad253a1d24dfa884bba7af99a
*e3f08bc15be6e0d28ee3070350b68546931be19afc530316e61abaabf93c783582a3088a7f217e
*7a7af1faf2e2c9e3b7174fef337cfd52c694014c6844722cfd2130e11146b8677969f4196fae40
*5eb17cc7b24ad6499a544795aeab7771a9af23c63721517ab0ba99c01b41dc0023ea8ad2c87f3b
*afc8102db2aa623e6933632a3c0ca7a84a47c770b4291e259d563881727f43ea7ce3df15b03cd4
*64a0c767a27fb4cab4799eea2a6e0a594dc6d7afcd7dd15fedd0adb3ea6d563089b9341eac3eda
*e9f7e09be9c6dbf89dbfd821ffe20ef2a679234a2fb540db9a2f26ddc644d9523b9b9dc9a26bbf
*34066ad1fc8196913f5d307ea334e9608f1fb12d40b51f7169477b40e46bacefda5517ba80e687
*02f3ddf0ff4abbb2deb68d20fcae5fc1d2702941946a0b49d02a5182344111a0291204ce936d08
*b44459aa658925e5ab4dff7be7d87b87b2dbe6c50ab9f7313b333bdfc7b6285478e7d7977c3751
*93234447d2f2f36222b51488b92b8c92833ab7459b213ae91a666c5816cdc354190d9a79ab8112
*b025ad0017f5de99406853db914e5c65505ff5300a32c8be0a956432d7f2cf7d831daf60b6c5de
*67da43992184f62eb86122cfe35dbdda09ea411a0c8f19097ce2863ddb8818da59d4d0c33ad7b1
*11f4bb7a985e6ff11ea6999c1ed6e73d29ff6122eb28b48a1108e84648e4f6b146fa8a99f5a050
*246679ef50999c1e9d3f1294298c9574c5ab7d416a923a3eb99480b87c9a7b247d47e01467d3ae
*1facd088dcbb7c1a2c5625de6bbc4c84e9417cfebc6896a50909a42d0ea24397611905d80f3e57
*36925018e804906906260418d3e491498c34cc05d4d4dee8b07f331edacaaad6785e6bf77f6382
*b740c5cb22af7f26f40044d50291d7208f60def0b0376e7b5ee34933ab57d54e9343200d8fc834
*335f4f2fe014ba6a30cc7692fc78fcd3c8e2478d1f74b7f5a00c5aa88d2503f1bde3448fe15c07
*89016e69416b6dd68a82273824c2635653f1aead1e41cbf505958d6512295528dd5d1bd2afe438
*d8279504378b5ccf8e371bdbaba3aa3f9c9c7ca6052091153c3d4682d78ad1640f1b42b7290c32
*cf4035c430db1cfe5e37978fc567cfe84c9f3f0fb6bec2a3a1765ef1dcf9ef695d6c6e9056e0c8
*7fd1e84172578fafb7f3721a1c8723976ae01b2ca1cbdd32c539530d1180405c0ac88dae4a739a
*be53f93f72fef396f0d2ba4479bfdc3264d1559674b7e0579353157e113b5a037428994cd9dd45
*70f850fc204578c7cda61a7858094177d1c8ee7e4c269fb1b3667853cd91328312c9072b46edf0
*f1b7279199c47e9b47e07f0ed7fed0e00b1880ab68f7c05a53e19e369eaa2d924a3aadd462b082
*63b5419f69241316d53869096d42e72ebe76439f8ce0734643107bde98ac69edab8171c81010e9
*af820506dbcad1e28d5c714a460317c465189d17a32b75a48d685190313ca585ebc9ac485aaaf4
*d4122c760a67c7d2cfa3ee4a22c1068a9158d66d5bceaf5f3eca19318889bbed46feaa47901ab7
*4eb3dd3c25484714ad014058f900c8f5d4ea4c0a353a9a1cd31267810437841c1ca1e82e295364
*87c1b987a497d768fe1ac96eb42e93cab288b101e342bd5ac0812317a9e3d9a13e939f532a737f
*1e9f0b122d1b0ee91c8df306f95164ac0b380031479e0db39e7d7276064fa6d93eb54995944ea7
*d6ba9a4e531e2a05acc13ee055001a629b2d834d3524ab1376f411cac4b0f7125d2268d875c10c
*b78a534cb7cd8909d6d7e8b2c116d896fbb49d834e74973d9964cded2623df2fdf3abb7b1f5ef5
*5bb67e706d0d297d31def3d57a531bbecfc4120d50ac5e8fb0979a8a415e818f02412d7b80c2eb
*d2e0d0c655b107da1625786a1031e5f5b2d8a1f5bd33bd0d7bda09a00b9eac8d639f2d96db36ce
*2922ae6ebf226c95aa604e76dbb629b1540156179248025a3902e44580452a5c1697292f8716b4
*8b6f10fa328f4a7686212e7fdc916cfcb8fa0545886e4a865fadcbb180802c19dada158310dea1
*fea09094cdcd8505bfe8583949f1aa4b4d355467af88911b09bb07c9793f1924bd375fcadb1595
*7236ef8f3306b6f61ec12d8a758f5bfd21add1d64f8db8fe4f7bdf53ca0c9f44210e97d8ca7d2d
*930fe1af9bf2be024b1facf10f27bf7dd4e18b8ae538edfb31b17e2ff66f34260ef2adb963f48b
*b06429afb7181ebd79b0a138149e7d8bf7cb4d7155caa62b1aadce5c9afb5d72271d12e84adbb4
*d208c300f1a55d37859a6cf6c11f9105a7f346f704f1ce632480815fc5c8abf5f652c1059cd736
*bf83376bcd4e69c4dca4973d92dbe2fc75ee83e484619c3bc4532a2657dc29b365813c912501f1
*57bb07e8f6a2ac09dadd2da0c2d9eaba586b2ac6ce817ddd60f0e2b2bc2f823436858ae8c4c19b
*dba7bd61876b9ac2c4861f1bf8be7bd0856dfeedfef46c5e0c166f07bf9cf77bdf4ecfee86e301
*fc7af906642e6463e2ba9bd9b2eeea60a838ae6d86068ceb3555133ad3e967af47cf9f8fcd09bb
*5971792eb5ac7ac284b704a59d72e31951ab0abfc368cf49e064d7b5e04b4f6f38b8f74893392f
*dad4f813d918f3e4f8056727ed202e605ffee3f1b9ceeb1e25fc11093828b8f9d01fe383c5f919
*61d72ad86ebbb060ff2d9d83f8c6bf5238ea79a3461383a9d4c83940e49da5364ed3f43d3d6451
*440d5b597fe2e5eab6845f907e18f0fddae5d3f5e624a7d4bd4ef4cfd879be75659af1a9c2a075
*ad6369d2d09c19795004a1bd851ebd255f92a1fbcec46b683b6353eec0e2f368f57d4afd763afd
*8ea77512d75f8694704844847f1b77c2b119cc08e7b0ef93cc45febc2e37435a02985179f14c8d
*f82c4a91fe5c34b08fd3a41fb1fb638a1ea8f6349719babf5f3cc32dc91a41274034073dbed970
*9f55082731b4e5345c6ab478b070ac3c31cc14aeb6b35ff8490cd55649917062ca4a50377d0b2d
*ded6ab3f79d272eaa3343aedd5d82912cacfbec2a00fde226921cc96653054f4ff95fb85847a4d
*6a972aa5d7320907c967f43c7b8b8d9da50416250a01dd58b4c670dda00144a3e994d26c390add
*bd78df3ae87d8a44badbd6d61dd48c605d8d78058fd4121ea9253ce2353c1217f1a21a7af3804d
*1a4d266a39e3bde512fe8b0d0c484d285feb2a19e56a4f7183547b5473a835bd9ef7358c45156d
*fbc5ea7eda2c822f61589b4a0f967c4dce45047e1ce7b32688b17130133947d4619c2706f43737
*15c9d785cf1fa585d99ecf713c516c04f6af6822127b4f27e2e4f16e17e323325cb2a63a3a9038
*1cd9e580a4390ea8aa64dba361ce45d7e05804e43f424eed3f04139974e321d96782a7773b7f10
*6f308daf70d1cbb3fa829c231e975abb83d40bc2e6beb5152d311cf5273040d1dd5fa34168a926
*4a38ac153f02df7e61697bac42d551c88e23f1fa154aa3d7ca76c262f857aa68a140909fc57756
*af7ee05c581665a21ff0144bc4acd9d926b37d749ce6a08cc0618324cb4dc31471a3a3a33c493f
*fd9a0a9235489debc63f3b7a96238f026c998d264643525bc39296763ac29a34be4f56dcc3d2bd
*7efee59bece30c1504ea60f6b7f335afa1fed1c5a6f5020d22205a2e92abf5cd9cc0ecc95559b2
*ab6a07e616690a17eb6273a598a10824f83bf2a497f3156cfece3f504b03041400020008001742
*453ab6147fba1e0b0000001c0000120015007365747570746f6f6c732f6775692e657865555409
*0003de028b49df028b4955780400e903e903ed590d6c53d715be765e82139cd82da6853650434d
*7fb4364b5a3a91958021180a04303fd958e3604cf242dc25b665bf17c8946c4e1d4f3cbd5acaba
*d2b10eb40155d76ed3344d9085fe50e350a7d18694a64c8b46b5c14adbe73a1b516149a0b46fe7
*dcf71c3b8faed334695a27ae74f2ce77cfb9e79c7beeb9f7dd176f78bc87e4114218205926a48f
*28cd4efe750b0395dcf5720939567866419faee6cc826dcdde903510f4ef0e7a5aad0d1e9fcfcf
*5977b1d620efb37a7dd6559bb65a5bfd8d6c597171914db5e1741052a3cb2765a1ce3519bbe789
*296fa64ebf8498011880f4e0eb567822b6aad199957e8c5ba7c64fdb4e0598cf50b1320075f18f
*595131e74ec249c8d93cf25f6f651cbb97c39994a801997327413291ef2c6bf4701ee0cbd50e3a
*29cb743dc846bc2ca8283a89aa8c7ab7dda0672fdb150a211ff89c450ea33daf628fe6c6a9c636
*e746bfe466fb42b75ae1bdc8e81ca17e52ac35549c13f8eba2be625c2455df83b5dd535d158347
*b0ee24eeb001c6867bb16258d86663a4d3464222933aee5bd13857a28ae4a1576468c2880866ea
*2785d1fa0443aa9e01135c62cfbaaaef23736cbab4a72a1f7bebaae6c1837f030c619d558c0b1c
*f8d8a9fa78027cfc4c15c943e9e7aa9e05e5f45baad713189c5003fae5a01f1d3775b741105243
*1121a916e0406d26da1ca43a46d56679346eeade9215cb43a9e50a422f7dd4e62ad07f0784a945
*59bd57a8c40592044a668224d68b898cbd7aaf9acfad91515bac7e120610b39d48ebd0e328230d
*43b0d2994248a4631235fb88dd4e62b557c098592c26563b7508c93540a0460c04e4d253e0e5b0
*1938c841c351336889b34b37031c3645210d2472ed3c67a50a385a9c8732717db960b4492b60a8
*a21cb916e7ee11e7512d085d2ca65a9b9d82c526dd095a31ee9e4cfcd2c7903750c570e6487f9b
*011e2e8e4949ecc4b80ce26c0c1b4be030c6273036e9a502c848bff434e808a536e989994aea14
*d7e24a33ea1c2fcac4925a87296bcbc95764d400b3c5bccab32da021f57d2acb3db163f74c93eb
*b3f203b972b1b81cfa84f7eae50b380dc0b60cee81a6d4b7e830424806d161c0c80ed39cc4ed18
*d84108ac0f6d0ff683ead7bf068b671479833071fd04d6f2afc847bf9c782bd62e0fc0380c31b6
*6a791e8edb86b3758c25c94221b1f20446f20afea9bcdaf97078e97c179fb7223d1f9885fcace8
*e0b70b937ad7cab5d1c1ef4c2093cea7faa65e66fe3efdcaeaca8f3bce6874162657ea88e8188b
*9c36d6ed70d76364189819823060c963306802e703b1188ab0c28c4292bebca3e3dcb24cb45845
*f0945e28c4258212ba1d4d6017adb5c536e99d42652cb01728cb08233176b26e47bd9a8faed11a
*f0052989edd0997a6feb1ee66685af7d996792d5b2cbd49b57bd2fd11de7ff1a8b8e5c879dbfca
*6606ee13ca1981fb947286986324e3cf084ec29d23842f0cbf8662175f8cdd7740ae533fc4fc7e
*96a143d4906bca102e27cc3b0eb910fe3c6da15c733f0d3feae20bd6c35f6eae1a41a272644f71
*328fd04ea6f28f6d97210bf41200c7cc8d61c60ebdf9317440296f322825dd010a5da7310f99e5
*a085522ad61ba6fb5f8b89c7a5c1fd5761a02522fce9757435e0909425330ed08357ac1d13ee48
*ebaa4d27693d9d859d168df36334a58e4bdd716eb6e9641c252f5309b726d229117e4554e66624
*0b5cab37f157930564b5586b14f576418fd6163f19eebc44f87c6128cd66cc76aa66c38f12fe79
*a8a8f47ad081ea5c937e169885fc9d13035827fc2d68ddf44cdcd41b171c52d27189bc25e7b842
*c3a6ee9d304f53afe3d2be82d5a96dc0474e97e6e4a36bf4013d2d4d035ec86287a44fe89a3178
*0ee2c1129ca154daf405e3e6ca95974396f0b232ce248cc09436568e85f201f29701c48e532b13
*d373cc943c186a080eac2a61bc01ae0c9e8640fb9ea94d81e5f47e3ed67b6452e667e39b044328
*8783e312ac6bea758ceeb8044b9a89155530593f8151ba242ef877818bbdf601e8aca99c0899c2
*cb0957145e5ec4e5879717f3a3c919aa81d7cd60f5049e1ed72fbf60fa41c2f4747c49825b3410
*45e1dd0b02ed03d151e0b866bf6f203a065c19bb974d46af0007857e51296f2616fd100b100238
*8a3dd177e06f2c2aa952713f62518ff227706b0cc07ace9bea5d456767c1d9dd82b3bba01e0f8c
*723ce4512ff4a43b8239899e47b34b6d920994c5fd14e985b723fd0c7dc73f7a1cd53bef52cd33
*bfc68117af81521ea8ac56c41d17d4e840f66646a60ce70d9d73b12495813fcf0ee40d1d1f0cd0
*6b76a4d34c389ba804828702043303a2153ae84cbe8233590303d377a8e1e10bb1235b46bf052b
*31f64aa6f0601b5aa43d0c7d038519a5fe30147116bea344fa82727d82b56aa9ab4f98496d1f6e
*7c3aae11df6c35604efa032ca1f411351273bc8843feced0b3307a8e2f48fd1806549b7a6786af
*5a618784af169a9e49140ebda8e33f0c5f5dc82dc3eefdf18a6114ec4f4487b81af54240b77df7
*20b7343338578b7f3f6dc3f795225b4865dd838a288d769b152bb94ed3b736f54c0592a07d7125
*904c72362a618f3bceea5e869702e118d36f6a47f0e484bb9d8bde2ee8c9d90f0507ef13b1fefa
*603f5a4c1fe8515bed096739be3ed316c5bfb8991175915306dd9378dfefba8ad2e087f5fd53fa
*90ca8307b70b8947f0f3c479e8e0f64315432f216feac68f838ab8e9085eb58e656e55a623e349
*9d29fa535c85b7bbdec58f8da6e8396e46a4d80af709fd4402bf3f32904148741968a0509f81e6
*aebfe08749065ac74f4d69dac7dfb072455d940f13e5b3366c3a52858fb62f6120800ea35438d5
*35888700b565e7e617e3e7f05194f4e0fad4d5f72b1675a90d7004d509144c9bffb977b350b96f
*180e5be1fe145942b8db65b8db21803cc6563047918d0ef3a9c1feecfd064a91395c3e1f064cca
*dcfdd1b8d0cfcd12c6d5fb916c3984a2f5fc38acb1f34ed81c4513b2fc0d08ab221ea95a0c2292
*2eb28ba55164a15cafa44f7ec67d142e86e5762a7f847a52eeccc5d8874e6dd46909cef7467fcf
*8dcbf276ad3f8be26f18fc65e78e6db37001aaa50a3f6783e6ae143e2385e4417ca653f79f025e
*382ffc4e348876463e0ffaf2a22b4e48754fe67b445e2469f0450d1ed3e0510dc62b622e9ea3c1
*460db66bb05983efd360a2c1060d663478a9065b35f8010d5eacc14b34b859836b34b85183b76b
*b05383b769f04e0d764dc732fe9728fbbcd9bed8ed8675d4fc4f68e97cfbcd24fd1fb76ae59fb4
*fe00ebb32e0a1591bb174cf535797d8d56673bde5ead706f6de039cfae16966a55fbf996462b2a
*a100ba6e26f20bdab639b3fc635b09b9083890d37700fac866425ecde93b0d7d359bffb9cd00c8
*3a80f601f5001dc8d17d1ef86340a781ce025d04ba0264d8428805a814e83ea0c540762027900b
*a81988030a6fc9da7a0af88340bf008a038d008da21ce2b36cfddf8ca780b81b5afc2116f95b89
*1bb74f1bf25f256edc8370fcba83aca791ac27ee50c0b3c787c27b89dbbd9be55a3d5e9f27b83b
*442a0007dc6e3780061cfb5016535b4b15ccfadabc41bf8f90650a6ec2df5e949f3cdcee10cbb9
*3d81809b6b0fd0be76888bddebc59f24488ab8bdfe5d84dca573b77abec9063c5c33d9a173fb7d
*aa42b70e872bd69e063ed0e2e5a812b452bd87cbd859a06ff0b4b4f8698c95faa640d0ebe39a80
*7f5cef0dc1e41ad0718f3ee4ddedf3b4a0ce8f8803463a83fe0696fe48f17bb23ac8b235de5d41
*4fb01df02859c372d5fed6568fafb1c6eb635740df061df46df037f22dec6a6f0bbbd1d34abbc9
*a66cff63a0de82bd61ecdbca79821c1f58eb6bf2a3e24c7d8ddfd3a8fa70eca563cfebb7b25cad
*af998e6b74ec6d60039cd7ef03fb1c1b547f33d2526ba8ad21c89535b6c04c2cceff9c72eddde7
*fc7c5aefd8b2d151f3f0438af6bfd7fe01504b03040a00000000004941453a0000000000000000
*00000000110015007365747570746f6f6c732f74657374732f55540900035a018b490b038b4955
*780400e903e903504b030414000200080072606f390ec5c45a1f01000015020000250015007365
*747570746f6f6c732f74657374732f746573745f7061636b616765696e6465782e707955540900
*03081d1f49df028b4955780400e903e9037d913f6f833010c5777f8a2b1d4224044d964a913255
*91daa152067644e012ac38b6e53b68faed7b26ffcad01e46209fdfef3ddb49926cebe6581f103e
*6c8b67289198549224ea193e5d40f872bd6961873298313c29a54fde0506471950d7b33619309e
*fc5e1bcca0b75a9611cb5f3046ef96b7e5fe78a80292eb4383749b24e4deb37386727f8951e918
*43a9c6d444639a6bbe315e7ac3e7b1f35613ce574a81548b7b888d6a57b79558534a68f6d2856b
*8d5c58ff69994f7ce6779db04435eb98fdaa2816cbd7fc459e45619d45ea9bae185d27a8d95dcc
*e1fb9120d620ac8b9df36863d054de871b9e1bf40c9bf1a39dcd609802e2ae72391a0c5c45a9d0
*8038a4c3fc17c410fea3d2a42d716d1b4c87ec7a4bf97b596e3721b8209c1f504b030414000200
*080045545939269c6e71b10a00004f3000001c0015007365747570746f6f6c732f74657374732f
*5f5f696e69745f5f2e70795554090003824a0349df028b4955780400e903e903cd1ad96edb3af6
*3d5fa1711f2815b29a65eec364e087419302017a7b8ba69d3e0481404b74ac892ca922d5d8b9e8
*bfcf395c246af3d6e6ce18ad63d3675f79284e2693cf8c0bee2cf2d2114be610ce4455883c4f39
*710a1a3dd20736994c4e1665be72aa2c1102c09d6455e4a57010f5b64a04f3e5c7b794c3a7157d
*647a31660b5aa5027f7b9fd39895271a314eb8a84492f220ca4b046cbeaf62c5ab5962659997dc
*f0bc32eb7f1422c9b36bfcd16f563fa654802e2bb9be27a55b545921e89f1a23f8d6e70029299a
*cda2a1f68e515195accb12f53320d76bc1320e429fb0b5286924c228cfb8a099f09d0726c2551e
*5729ab179d99f321cfc03af8de651bc4ac60595cb37fdd65fc9d95c8cafc7e2bca2412ff568bbe
*f33ecf39d3dfba98f86ed040162024c2828a656d9c0d5825e7815c3b011f3b348e1374064d430c
*0fee7a97270ebc8cb7f30897fd3a7ee48f1c630474348b411d4dae2b01f0a55183ab3c7a97a42a
*ae5c428b44310ac45a10bf861e7ce5324e16297de03343eefafdfb9b8fb737b7be09f159186674
*c5c2700731aff9ddf3948e0b344850e8b8736633873c25d9c539b9ac41a5aa0158095574877502
*9c9047655288f0a9a445c14aa99ce65282e3cb4c115236976986e1e0be7e4dcb07ae4d0eb9fa49
*c1a243cb645ea1f68e74b1ca6d034f7ce72911cbbc120e5bb308e0b207f0f76a4521ac30e525bd
*762407a12411729117215d08568203271a294d32a6b15e39577946849332192e82ad0c6507a160
*9d3e3a49267247baf16f1209a50a80beae1a2ed1e6c075e2df9104d3224dc9bda7988872d398d8
*18a8499096b2126e914084a616525bb921dd64eae12b4a29e7ce954a3a59325d53f2c0f2ca54e0
*1554e75a25f75b4c6397b374e1351c215ab21c0ddeceff4b233f588e3f2685032ecbf26c3adf08
*16e531734c78f193467860b738732de2f87a48f3394d9db5bff19f5b3facd15328dea4b5bc81e5
*e786e82b48c712583e64c9338b1dcc89268a419500ac00f5e0fa5b4553b7ab85bb380b16551685
*28b24fbe41844dcf3c55bf3c9b475de1805af290b1f8681e6bc343a9d6e2c2d645c9b82c823fcd
*6763f8c09bcda3632b5f7af7a7b93d772cd70aaf774916ff2e3b4537b82c369f68c219776f6401
*d63d12c23fd63dc67748964f79152d83a95842e213ef382a56be61bcb2356414cb84456ee1177e
*024166e1b9369a2c00c4fba7b308a2149a92ebb5d555aaea9c1a49a781e6794046d592b6daa069
*5e61a83b69188efbb39d827d695c52d3253eb1481270f21007ef677841c5052e9a2872c006a5bf
*fe220e5dffa152d0d7a442fa93c5a9e5d04fec5b9594ec052b63c9be41c0193ee4ca32fd59701a
*5cc0dfc61d563af70c01840295d616116f3b7c9d1af1be18f0bf02bbb0d8c401202b39772052a1
*1a3c726bc5d476b44595a672b7e37ab66253c3f3572404f2c1c8d1a06e3bcc3b022e68927ec952
*a8d512cf80e58faeb4c33fcc26a88570b3e801036870b62f70953d66f95386e05ba54978886d04
*8a9aeb79bb20a3aa2c35e4ce68742e4e4f4f21144ff55fab42603c5331b337e9decf08a9d56f0b
*78ac91bafae4d3a72515d39be98ad14ca5186a337d9a26d315d92acdc1328f09f15915213d2f11
*5d939c65be6205eeee274b218acb376fd89aae8a94c1766f35d99525d207a605ef9b877b400fa4
*fb1e58eda455faee4031da037c5f7d3bcf7190e360ce3b3dd4c19c5b4a568527cf050ad8aa43fa
*e24f6178bf6f204aaafba78c01afb7da38bee4e33b6d68415f8ac11d103b035dea59db25735a06
*0ce7c43bf931c201a28d70de468802dceedd918d826d03639a0278337eb5baa51e27f9ec8e50a0
*416830d77f80167c90df806a7bcc2c36bac522de3c88096e6c3b30a0810102f6aed6d4371a78fe
*901c217812a0fffce1dbddb8d58eb59d37c5f076d27258c2e50496450a525ac2ef9c8e0457d6d4
*e975795dafa3b48ad94725dc203f498429b8506b0103ffb6586ff08cf5d179606932e2be3efdf9
*e1f4fb61348253fb16b1d67b6259de06b4aeb3f7d42a3a58abbf5ca5fbd63425cf164bb6cabf53
*e88ffac891172c4a16094c58ea24a7d9b03739e8f5955f6385532f3b046f3209a723b11b82af14
*77e6d00c134e9fd68d9adab5749a592a1d698df3b635681c3b8970e6a01114e0012992ec45a430
*61d6710e5fe6551aab0117248bab224d222ad8ff50b0e1bac2771616d72ad3509665ada0fbe6f3
*ff41b6d47aaf0ab1e96adb6b505eeba7da39ad5675ef779a10ae0cb8effcdedb9bd180b10f63d4
*d2f56d9ee1c902dfd5a51a132e29c731526285b08f916dc43baadde80de94eda474935df53aaf9
*1152cd8f962ada53aae808a924ed7e6586aa9fc4db0b74ff706ae0294e7b2bd42b4b7848979993
*aa5035951924e6f6a391c3d96953fd55ec6aedea7cfb13b85c920df9f1629abd3cab5a2bbb46bc
*bc62bbb8bd8ccb70bb0e35f11bb97f698f0d72eabcd41ca69f6b1e33881d780e77c098b5504281
*6f7a8febc822cfc9a511db9dc0d7898f634b4ccb78f6b9ac985f2a89c29a0a0e86cfc43742df7b
*fda780383ada64e1ebc407595b84edf1af787c0810e77ec713c5eef447cb90096c8a6a27aa96e4
*fc3a4e6958de674bde5119409167504495259acedec1ce7b4891e76d8aa80775f208413fb4e36f
*00254cb609eda4c9bca465824c5c025fd0713ebaef0dfc877f30317bf787a81c3f252bdb47575f
*6f7e07dde877e848749e32a39cb62c9a28e14bd221f5a39343cd434830c674aa9f994ed1b730cb
*d70f2507e76f6512130a008e1f51cfd1030089a083c0778c885bcf02eeb69f75dc8f1dc45fa9e7
*ace33b2ae8e22db6a3c1a41ebef5b24c59794dfc8e075af89ea982e17c139a47bfde58fdb3362f
*83a2ed90646f66af0c45675541215a52980919789e95cee313c6828922bc0a513add8a7260d136
*cc3a8f318da3fea5cc97a4497fb7df67d0b2cbf0bd98b12e61c4bf53a9745f5b2bc9fc066c2c9e
*b412ea5e0e1f194bfa54b6fa15ef4588e5548ae3cbd35da2657230bb89874793b6ec61f790c03b
*841126b6cd4bb74dc9cb7175c078bf9aabaa256ded60e9e518d6f5abad252e1dccc91e5f5b7819
*7b00d4bb9aa12a7b4a61fc7c2c1dd5541bc31d4b4785b86f05d8f02063317e263deb28aa9d4cf8
*c2994e8603d3a0273cf2869929f7cfbc7d20c11efee99e90cf3d9a4661dd7e6a5d9bee3482601a
*5c83a1dbdf7854d6db8a43703a7b8b1a55af8f638eee2f6a12f5666497f5ec8399ad274012badb
*18cc598edc65daa76b370be78939943fca272ee8473cfbd3676ea889336711ad384330b6c6b3b7
*44a41b141e1b6b6c9102bc3c939739ed3b57fbb4a4d6954a7b4231f2fb6a1f3c5cf8bf425ce921
*fe93ec8d07f6aa5b7951ec7a9d08bfd9f7fbf55e1f9f63e024665abdbcfb635afb8678adf14ccd
*2e725c5136d87e650bd76fb806ed8a8d0061b48adb675df2f1b6367098cfffe3caa78ec4dbe7f1
*89a1d8b9f81a6801bc8e7ddfe7d903b8465e14fcfa21d7fbb69e98fcac25617be32a85f361ff8a
*1fa6f21ee10c73405da394dfed9349450cde77aa8930b0fbc45a28efd7e15d28774b5a20bcd49f
*ab3bc2a42bc5f02e55dd92eca97cde52b9a13b93dbdf16d93d34393f5093f3b6263d96839a7c55
*379afec8deaee2f790987da52ec607df410dc9b689c5387ea56a9fc6b086823dec7271a05d2e94
*5deaab300ddf7dd0b439edc868d649ff587801b5102faf8e6c3c05fffbb83dc76d6559d721536e
*5bcfa4cb0136dcb7e882b03d5b7734fe908fe4c26f071628c038d0afbfb51cd4beb5208f8cfe0b
*504b030414000200080045545939614cddfc51120000ac4b0000220015007365747570746f6f6c
*732f74657374732f746573745f7265736f75726365732e70795554090003824a0349df028b4955
*780400e903e903cd3ced72db3892fffd141866b648ce50b44439371b274a5592c9cc66f7f25171
*b27bb3b24a059190c531453204255bbeda07dae7b817bb6e80a44090a268277375aeb244828d46
*7fa3d100f5e8bbd30dcf4e17617c9aeef255129f3c22831f06c44f8230be3a279b7c39f833b640
*fbbbf79f5e9f937cc5085fb1058daf088d03c262094ba230669cd08c916592910b3f0bd3fc2f8c
*062cfbc478ce9f9220217192938cad932d3b5966c99a6ce230cfe12909d76992e504215f51ce1c
*b2a6d7ec6213e6ec291190e9f5d53c633cd9643e8c5280ff20b170966fd23c4922eefac97a0d54
*b98cf2dd3c8c794ea3a884be62f99c0bb2e62b419743423ee7ab93e279c29dfa300ee13bf8b8c8
*33e0efcdfb933cdb9d2335772c86214fd8adcfd29cbca36bf63acb92ecfc84c05f495145e49bf5
*7a93d345c42e584e2857109cf811e59cbc65390d684eadd7eb34df7dc8926d08c4d9129d61186f
*13ff9a248bdf999f933c01f9e59b2c26eba217a20c9772581a93241e0421bf26f001642f367998
*c480e344200bd892cc412c613e9f5b9c454be7879486192fc6c23f6c752bdc13c0e3e79604dae3
*58513e2f61249e1884a0602968c45612c675a47b34a8903e686adda708336b47321736d8856a17
*b22850c0dc1a0da28f5deae5671461228cd72a0d13305623a3e1be4aa208f4024216e894011f11
*86ea2429cd57e030c9260a489a25c1c667e00635fdf0aa130d40e4afe36d9825f19ac5b9359d81
*4d463407975a4fde25317886f4537163d7d50644b32c7ffd6543232b02fc160d6c874c671d6034
*989abf24c987eb2b73e6a89034706910583f2b64ba6863f3651831949365c87e83913b9e8f5c76
*7565d80feb7e3648771e7cde84f1d8fb1a449e4454a25054f14e1822475b84f895a1066eea4259
*d230fa1c478cf39a4c6c05c9cb0dc48838da911128d5bfa657ac97f8cd6592a41297824c658813
*8e8162b1235b967168388cb77a827f533422b7e823a22e3620932a0b33a401a46c3af0391e8cc4
*b767ce2a542a8f1f31386334a7350b2511a35b88bb9c7dd940c0678446607eaa926454afc96e3a
*eab2bcafe5e410072f604e82c00fe308368280a3cad7882bc920ae3ec8b29ee866f90dd97922d8
*6963aababce11016fe9164d7c012cc2296eaa8605d230f1edfdf436a28cefaa268f15625c87e71
*004f4a33ce601afdb209c12c208cf1b2fff30998a05177cd641dc634223e44d7f32a32261c5c4d
*c44ea70c9e2274139ccf699a46a18f536a57607317109fe76b9afb2b0b09bbe176a9128708b9ab
*66f36609262f80d16c240d1831689441aeb023452ec1828a9e62461111215fd15cd196302c2155
*fbe943483b336b2202da30eb5ac2249cb7d1b88939644a280fc8687213882e0309e471f1126495
*7799d2539562af7e7bd66af21f69c86102fdbb1ce4553186436a9c39d21c6eb8cecb3a81000c12
*43d931c90f2a1b59940adf338b003964821ca64ee6b300634f6f56ce8e70f6f46baca752116602
*fe8af9d7d2c265f211e819958a3c70210fc06c6e8eaee590c2370cbbabcb35db01a49c4aba212b
*2a0d11eebb81d3dd7c0f0f6e7d04bac8440056b8ff11680c03c11ebf0c0bc5ad555267d7132a99
*74bda43cf4b99e52055a8caa075de394276b768a266438b527aab827a5b49d8290494188b317c5
*4448c2a9f2ae82d996e94670ad6a3f508cbd41ae4a616fadc012a454e9f47c3ceba91f991db648
*f6032ae19860bb32bd8ef0df268d6f31c4208c9789d143ea7556dfaa4b8b8799d101d3210d5b21
*bab1d42d5059505554d500f0cf323ffcedd7c19b77bfbc371da3041b1441f69c8cdce165acdc81
*d15ec68a54ea9679445a95b87016f92867ea62e144f2dbbcb970d20c190211305db235a998b2cc
*80a52c0eb80b584c89cbd623a5361e9220201dc26ef38cf2896577c5cf1ac722d116e956566295
*486cdb6902b6642682423de9aa1bd2cf92a50b58d0470ddfc1ec6e8ba99df1e906a0598039ce63
*104eedfe32fe274e932164409e3b34ce6ba4ed3554938c5bd3cd16d6125b557348df47c69368db
*a0a965192926bfc3592466fe880a138b186b0c7b0991c173acdb889c234fca44e8b07aa4a461a6
*cd0ae2600d0b2b21b112d5d61ab09880491efd4da2c7f2905ca241e2522eac717cd5fade25f92f
*c9260e3a12939a74dbfa625a52d2e71cca570d1b339a168f8267ddd14c0b28e02cf320cc4ea11f
*e6e0226ab6c787c38e644c17349b5dc62fe99d3421bbcdd78b350d0c04faeeb7c0190cf7ab9b16
*e508c558dc1629aea8eed12d2c9531d944c5a0aed12a28a86a4b7356738b109599d1f88a5963bb
*6ef239cdaeb0463669584ba7326cbbe938aaed1568c1d4a0cbac0ebca6a925f33fa700bb576eab
*184c3db968a7773201b916447765ac206a408bc5c0a6ec214316b14ccadea71b8e05d618f2fd82
*9280482381b47827246e807918dfcc310eb0262cf1a07300050f720ee837f05c5948ea33b348a3
*e870024058b3e817d244453503ad364e6ec03efd681380545b047a9f09e8b8fd2a4213a1109a1c
*a0f05015461800173a2d977018208ba483579544cd4c3b54af83d6adb847389cc03ce65dc670f5
*1d5e350ce0f0c4f93e1555aeb63cac39cf61b15aa54c9d45b5224be25fb178566b5467d9da0300
*06638cf873f0cb711dcf92f2dcbf0aeb8896d042d314c14740525b3a55911c38f5b9bf13b84e55
*bd678dfc3ac986cbd328cc2db41d43726ecc3ab3bd7e23d6f854c728a4f24d0639ccd681f1eb0a
*2af975be2951eac8bd04af1155d202a1e8983e6a8ef839be86d013bfc6c80ec96f95b70aa1434c
*c33ab1fe2737245ec779b6fb9084717e7853420eb5c45a59995fb3b42b9b66a92bca10626cbb13
*6e0d312762b26a61289b6ee8f0f273bf77760415cdf30c38b60c8d27c3b1bb3bcae41e7bde3661
*95223e8046090d2c1b0b64da207dcbb810c2008fa6789493085c9dec9f6b4392e9edcc680b9680
*e773aa47c62a2ade67266d2df2b6cfa4a5c9c9a9d404da4c5b2fc4b49760582a5616256f564334
*e80ec74c032d5dd7fb4c77af5b68da0ba2dbb30a73075dd579682d76600ef62d94a8894296bb2c
*ae10dd8bd6c3a80c4819c882de4da07f4ad7eb30df4d3fbc79f7ebec886f49ff2c3adfcba58b51
*7afa6e6f4f4d217511ce7a8c61b20cefeea21d3c2337897f4dcf8fc7a42276897ef7e155e0ef1b
*a4845df7655777a48f0c2b48bcad6e00628015d2b4d5896e27a389272fe8f9e2dcc7cb2f93dbd3
*98e2d592dd4dd290afcef30d5f0dee24dc724a67cfd5d2d34c5b74e1f98586d4d11255a8e258c3
*df69b429ce354046c8791d26c2cd9a0c2734f242c801a29300b68c0bb13d626e19593016830d06
*869883b422d0c566f196a6c514b5ee9aa120da596bc849f05b3ce49b052ce6e6ec3605c1da764d
*a4a24e2ee5da8475c39c65f0bfe6967ddebd92cc589a596b3c1e60014a4cd9450bf0513052435c
*1e94d893c268bec9d868a2c44ab36c84d58b89450f6990266e03e2ed72138b82873953a69ca28f
*d786c84344146b332c7315641780ec15660ca6d862149689dbbee2c26b433f6e433f46f4b0fee7
*7bdc457d4ed22b4a03e516b9ad0a05662c0cb25a26ff08951fc6ac1c542e6f16115d898f7afa5d
*880a837425a973554a6de0b80f5a97c779250b32957270a414666dfdc7d05f61984c2b3667e561
*9c9609e63f7105d83683ab76aebbddfc2a4b362964313b745ed5544178766765a2724c87b463c5
*6040649880651b4c04c6d7e3331ae9af407da78e326b9b7e4b275784b36e09fe732ccffcb709e2
*30cf3569fccb3e2cd6f55474e9da1659e3de1938bcd3003d48873105c8d9656cfca82be60fa2e4
*9e5a016a30871254a202e4c557e26bb05aac3a3e2a8580eec350ed29238602054739d72b6bb1ce
*7d444cc233dbe90d2fc23476688e69aa384cbb138ba3d25c518ba9ab653e9f148735ec9998efef
*8127073c9fee85e75dd29b2458bb3e0cd53f93947d0b92343ce387d1a359888cdb7c56685e8b31
*eff14c8f28516b5637aa9b9d26af49c1a73f326da7c9f61e8dd78966dfcfa9e39c1dc98fb39193
*79c7ac7e643be2dbb38f417a7b0711653a7fe4948ed2f4d057499cd3303ee6a8478c5e3d3d343f
*be566d392d586140a7c84723720443410ea06847e0f547d0ba73ad540fea471524db6233e31e5d
*c00aca0dad8e6e02f7719891d90357a589e3a0a5c8fb427a0554cd9a5e045b1afb2c3868501d87
*c184793acff03c988326fbc4790ee1cbf96ee2b98f9d671039a0f5ac564bad365aa5cc843116df
*63f1f94486407724bec7e2f33f6418f2b10dd0996d69bfc2acc00f645b5b27b30f0dedcb239463
*577e3f968317c30ec5e7e322fae1a0c3e383965aa806d6629cac9fbf8883bf50beea11ecf4080a
*86e1e0fe833e79ead14def077d9c5fdebf6ff61b77f77bf9e2e3be1fee553e3c10e2f371e773a5
*d02096ce864878bbba784a17042e6a9fb638b42d9e888dce38c9d6340aef587018d70a14220235
*91575eef33a25a4f991ac8680b37cf2786d3382f85b39fa39523f5bfeaed026baa8863661f3ee3
*50ec0b0912c37cd7d7b6f6b533dcea1cd33e76b5eff39de8a31e37eb3e2074d28c4f6f9656a0a2
*1c088c32b00b6f1ad93d3b8d1ed2491dc9b34f0ec6cf664fefc870bd3a7af7e9387e68c7c71a93
*2d9b126291d7bd2e90efb5b4d6625bcfcdb74c19a66917af32d430ff86c5d49680284e1fc4a993
*6cf266854dbc5401a8c0d1cc5b131763a6b8994e67e21d086c27b79731d9896a0a8098bb5ad144
*223101e432960fdbe166476a4c9259f58d23577d3f051800a681058de90bdc8fca5bb8eeb151dd
*881df5e1c556d79ccb8337cdbdd8f2efb6b575fadbacb5fdeea4b599b6235990762c8f30d16c7d
*e2b72322413ba2e997f6f66d6b6b9b08b433775a65c412afe9880d0c3425e337036eee2010d3a2
*61810d7e7103f15e9a9cf1059bb7d0dc6f1b5159d0a3669d6e454ee50ca719125d327c33e6a81d
*71009ccb1c9a06311fc85790f00440fdbe17867f5cfcfa867cc6fd554440c4fda0b8ef8f608fe1
*fe08de828276df7ffffd5b7acd328142b40c8afbcea5aa822665f4dabd610b81016f06e2a629e3
*6286ed276675bec7f3d1e21cb7d77d8ebbd191d0285d51295f4cc18adbbe18207b76cf88371c3e
*1e3ef6240da2c9dd37f545f50059b7a169c8da6d93b538a0a9d6ab1e1021db261fcc6b079f8ac2
*d16064ea674ba7eab2b98286a965bf6c1e54458123ee7d5fba2065247231452e2148e2cb1597f1
*33510a3a4a65ae1129ca18cfea95a4fb93db92f8c182ef25cdc43aef091d1b1a61b5a28304ad55
*69b04fa3ecd033363688710c3ce431361edefff6f2f26b7a4f261ef9f21508fe0bc47819ff0668
*be02c923e37eab00b16d67f191c33d6d359b8e1c927ad542bff4580e2b1badc53b72781330a560
*c5721447dca97bc6be587c0f325fec9fc1255ed9eae321be4547f00bcd577be20e713d7ef8e9a0
*7c3ad09fa6d1483e1257dab3623b6f286a0c1a56ec91b16dc86e244c0b8464663868f002fcd192
*51976231e969d1ecba2e2d1e50b35d8b878aa27f9416d532d8e8d911257a45a54454c86a0fc426
*a5b718b63637a071e18672c0528ff66434289e8c06dee1674d8ce593343a6b3ca2c301cc7e6730
*ff9550bac2a42a1b0f5e3cc622d44befa77af3d815dbb7f0e5a6d1b0f14c5209170d9b2bdaaaa7
*83762f68b1f20effa86cfcac311e4a4a1aa8d4dab0f138605bf98c0ed51717f324c34d55325173
*e8a1fbe721e8605c5e78e5c5082e7e7a02b1fec9931f4513faced960a4f46c3cf6049e96664fed
*f5134a535e8cca8ba18218c82bcff89dd45690a9b31de1f291c59b35cb68ceac8225cd79447950
*54488be7d3f4c7d1b9b6fa93e2da7a80d3d696d08ddfca5057d2d82f4ee239e57e18ced92dc893
*98a79f216cf2d3bf26fc7ffeadfc7887598f06f3c62f5ee801215c8ada23be6356bec0e4f29c66
*39bf09f39565fe4eb7106308f0274a94f86b1916020319befc510b4d148fc8a755c889fc4d0fb9
*c10fc40ffe2ac8ab5e92e2dd1341936cf391fc9d9228f169a4327ca41a46a0e39f38acd2c99f48
*023cd27ce562590f2f7446ec8712b527870c6efb514400f2ff8c2af30845cdbffdf8133162cdfe
*fa3158f2d7d2ff9891ce7f1764cf6f92ec9a66f856826eb6a51de1e910c574f7d990d288ee8266
*3c721fbbc3f9686ceea1f200eb431287bc39518f4a6986fd02726bff9ad4f5235fcd902f66543f
*8b83e51b62e1411282f54bfd78157a7043ed65830844ec36b7e6a2f6399fdbd3e18cfc484c37dd
*99478ca1a1977b3892a32abd5dcbaa65b1784b4ac7daeb742facd731c7d07fc3808658c44e7283
*9202912c700f9246d10e24b6c8926b16d704a721ba59b1e2373b4c4e12b911e2108c4ed0fd8666
*31be16c1d6f83342415d3a955241dce54ff8b8e585f58dbcfd6b5cabb72f55ce24247d80eeb965
*7e8ea54926840634cd6b62157b8c7b99e0c1b62dae102c3dc2fce162fb7f178efe38812ef1972d
*222d9268c1a911bc1a5a2842d3c9ff02504b0304140002000800455459399435663c82040000ef
*0a0000160015007365747570746f6f6c732f5f5f696e69745f5f2e70795554090003824a0349df
*028b4955780400e903e9039d564d6fe33610bdeb570cdc83a4442ba4bd2cb0810fc5b6392d8a22
*404f4120d0d22866238b2a49c5f1feface0c495976f6b439c41239f3e6cd071fb5d96cfe7cf738
*3a6d4607de80df23e49d767ef67a7039f4c6c2a0ec0b023db4e6300df80ebc6ff58e4cc86bb3d9
*64bd350770e8e7c91b33b81a1326e8c364ac87254805dff4ce2a7bfae0c3a0c9fc8f55800a1e50
*f9d96205cd0bfa661e27e5db3d7659345ed8d6ad61ab1526113ea8b1fb180b271c3b97c23de27f
*b3b618cc2ee192c9d78004ca41f3758d7a36e7ffc9bc35e31b5adf10d57de2695c2daf59d3d01e
*17a369600bf95dfd59fd9ad3aa1a065979ca80fe72e19b5790afabc1efb11efc18a9f0e352627e
*8919e55580eaf5d81197f655bda0cbb3e72cdb19e309554d8d1e9de7c892cd16fe32236659873d
*5c3815c73d5adce635a1e37b3bcc1d6e8bb2fc22f834028f44d68ea060e036121efc7df27b1a80
*0440933453fd8edaeff54855b3d87a634f900b709e05a2e105dcdecc43073b04374fd3a0510aaf
*60d35ae3dca769509e06f3b08142d758c33f8fdf3e397f1ab004aef03d682f70474d3c08247683
*50e284ab69b266b25a7984c1b46a103f70a7d1abf79a78c41473d01456b01c5514c796ce419f72
*82511d504e4d34bf87fc2687568d1c74768935d1e85a653ba0c429bac0892bcdeadcee694d79ea
*913135790be788277574f36ea921c566bb1c0a9a06188d8fede525ed1d0e7d59a78ec8af21331a
*a8e79082279ced53b11eced0d79246262f83d571af070cb6a1bb6191acaac962afdf095076ebc9
*4cc55db9d8b054705a9c26cd3a0f02b53906384389e94820f13cd4ff1a3d06ab8addcb0b4bdd43
*4143c7b932aee0f3394cceda718c7e2c79f5c253d25fac7a4aaab888d88f55ded0f46bdf34f574
*cacbcbc0578c63316b9a1c528e2254e256f8dec772c42d065e6ddf12fb08cd05a2f89c0717a788
*5d2e6f9f72fcde84e3fe7c0e2b07b21f0fac764957e26bab1c662b5adc63edf12021e4817b40eb
*543eaedccaade0ed8a68c476db7070c938cb8402615d4a602dcb245b4903b757425ca49d32cbda
*413997d4f2bc11b26a9aceb4227169a38e4be1f847b96e6840dd4ce7a3a18b877e47efc8e5410d
*94b4d8b13aa5d6153cf59550aee0e6e6f5b86adc2ff07bd7898448eda836af783a1a3a890bf062
*bb62b40666dccb117faddeb8baafc79a2be98aab41a16229ef6df026dbf24cd922236b35e8efd8
*c45c23fdf856459b860e7d5c72dbbb0f79b5876e5dc39fc3fda9ac28b22415aa3b4f1d2b684414
*6d4f153e17360e1879663fbeb1b3ab713b8f597a9260476465cd3dc8d4ad31881329a572e76b8b
*74b3205d0822d3ce969ecf57d583e67b9c949535c101dd4a68f99bc7e6a22c912f5f13729791e6
*f673b416d5169cc2225d42fa0d59fec5f94a79e54a95008bfe729d777404795a2d897fd80e6a79
*54c36b71a619a58fadb7db2507880035098ef58eeb5d2c9bb7f4e470ba6a1c9b1303fe79faedcb
*f335f8952c27be17421928f7a5f0ef99afd89db19654c3775f57d08b475b5caa6fcc376a61acf2
*e2fa83d9e075ee40f671a98e4d26aee94966846fa7b4b09b5f40be3492739665ff03504b03040a
*00000000004941453a000000000000000000000000130015007365747570746f6f6c732f636f6d
*6d616e642f55540900035a018b490b038b4955780400e903e903504b0304140002000800455459
*398f3ae7d013150000e44500001f0015007365747570746f6f6c732f636f6d6d616e642f626469
*73745f6567672e70795554090003824a0349df028b4955780400e903e903b53c6b73db4692dff9
*2b26507400d6202c67f75257f271735e5bf1a936ebb86ce5929ccc824162482104011c06944c6f
*e5bf6f77cf03337850bead3b55252180999e9e7e3f66e2799ee0eda16eabaa10f1badaefd3328b
*57592eda846fb7b3d95f0e7991b1187e337cd9e4ab439b57a5f03c6f363b633777b960fb2a3b14
*9c89bbea0063579ced78dd320056a76dbe822f0f797bc7de1edbbbaa64dfc47f9ce5fbba6a5a26
*8e226215fcb34f1b719716b34d53ed59870f53e35e4ab4e467c40250006cb3bc49f0971ed6f07d
*75cf93b6e11c40ee60f1bbfe1458715d959b7cabe76c799bd4845872cf1b013b8bec7745beea81
*d0138b6adb07ce9ba66acc8057fafd7bdccf157e9313eadd3669b8a80ecd9a0b1b8f15923aa98b
*b4dd54cd3e22089ade11e3a538343c814df3755b35c713c0aecab639beadf2b29583da63cd2d62
*66fc065ef4891df34f2dac016be9913fe4ab2685856619df3044a54e24a7834d5ef032ddf3f072
*c6e02fdf303ff6595e32fd41bec73ffd862d80d331f224167591b7b05a07e6f662a901e977312f
*33817213f872513f1c05aa7fde5ecebf95401ad852d3a122d17f6860c90438b20a34b922561f71
*9082bb410c6b5e06f26de43ff8a1fc10d3e4c0ff50faf16f40d5e0d620e221ec245955550b044a
*eb2409c24b2feabec33fdba25aa5853b2a82c7a24a33dec8dfb86292f426da5ae2f039c24fbdc1
*1a06ecc2191beb5f8926489024f81f58f8bc093d0304ffce99214e0fb84616c0bfa94afe9c65fc
*c496861b89f153921d61e57cdd61a0b10eed193d7ada9f3c76c65adeecf31228faa1a40fcb50f3
*695d54820721da25e434209497799b24717d64a052ac4ed7bb740baa602c19cfc836558796c1ae
*666fde276ffffa3a797ff3d35f60a33ecc271600169e43542f8c33be2e52d047dc8800c01d5943
*7f36836f423063460365c140d408d58c8b35a8132a36ace3ad1b9eb69ca525fbe0c1e80f9e636a
*3d39e72080b215cd1130a993c1c0a775e66019167ec4fc951f394cf55a8ebb004d66c678103968
*d9bcdcb2f68ebb2b8691051d0dd21cb746d0eb1ef46e196db81869665b31be5f017dc12a6c79c9
*9b1489ad6550306f024a001a951e8af6929d8bd003891c5ac62074f0e39fd6c521e373c99b392e
*21005314d32954a5a760695130920d9cc2a4a9045274e802335c5aec38afe7484f24c56e921438
*8c40d5821fb26a9e97a285c5526238fa279636d5a1cc58ba0169061d79320168924500607d97df
*73173d470eb249f43a31002ed520fb1bd227a472eb7a79e09ebb82d8e5f59cd8f1088971205813
*1a8a1be0e05ec1a7e2cf0085afe50237f6348321db2dfc0af5424b29ef60030a9e96a322eff2c1
*c1695c1c34e0fe9f54c60d433b91a745fe999bf502c18b8de573f0510546403f6507ddaf28a089
*f24bc3af88738238c3d70bf7d349a8b83da901c38920a009182fe4e1d854458bc4f200420fec36
*4fdcb7b6dedf39cf93f51e1797309d27d44e3d3f4b54fc18a01503dbbba9bc70882fbe87e9128e
*793333032108e8d11a424c44f9d21135f979950a7e1a17691dfd30ee263870067cd5610ab9fa6e
*128ad6760b31c100d18eeda3880e4463cca2cd7a3c8721601f386c07b6a2f9a2b6124945477449
*cff5ef7004374b400c720e7667185dc367de0555d586cc8d9a8659804377a085da881da006033b
*40d641fddb6236ce755ee8b87b0060189b07e1709451208d497c978a04c24b15ac8a2004cf9af5
*d8e080090d623623c695cc910e477923439a277eac44a56766b22a51ae20c9d236ed2bda19fb4f
*8850dc50a5bd4b81757212c34968b3d5b32fd85cfb9639a62a0eda13eaa0e786b14605666a1532
*7a60c92306ce069d8e0025c8ed1a361ce817e0aa0afc11b8f91378ebce085445168d700cf765ac
*d3a9cfd1edb2c30ce904c8ed31c400c0aed68102e4827658426c86c322c87420da27610049a777
*e162f1cde540a460aede542ed295a0a190a38497a3ce4e6fdc228ea1859e393a114928d9334657
*0d637c2ee0d84d5f2c5c2e0161ba8f31d0a069652e35eeacfb5c7e02b8085e8f0e9ea001a184bc
*581872dc22911db8e1936797cb88c6dd3e5b8ec23963bffcf20be385e097ac497330eedf7df7dd
*ecb4be77e211a735647099646d2728900dbb5843f21ea3d3093ca5031896282c8d929d0b0c3f5d
*b50887a8ac5185fada45ea0dc6194474cd1717116b20a359a02d0cad241674b3385e7ef1ee5048
*8acc3227a868d2300d7cb64a826f7b066c69cd7610c771115864b2ce7ff8c3eec182e579de7579
*5fed3840ed02a58ca9b9eca39af751d67976fcf8503510db365baa12d9ea0a24948eb264d76fde
*dfbcf8e187e4d5f5bbab97373fbefb35797173f3eebd4b8edd03ba429512046a7634c51377b4df
*054e7ed48ba426e764cd31690ea5afad947cec865ba18f4d0c43474d424634740d3200ea8f0bfb
*0c83f7168b60c6d047bc56e909dbf3362561dde48d68a7d7b2a3310bcecf1ce133db0bac383089
*335b88c1abf1750ac92713d55e29c71d688ab020d507f04d103240f844dfc9189a74ca5e401718
*672735b1908527189df1c73511273e1a91766ecff64509aa254c5420627c7cee3cf5c36a6ba171
*c507dc41781ed2a6442c1717033c3558bd7cc7129caed41902a44f46b7ed9d59af839e7861c983
*d2a4ceb2b615225883f170dfa32a067584c0480a511f7979d8935c05d61a3d6baf43449c3956d0
*33009d59b2a0361a3badbae069bcc008a1547df447cc2eed56db7b55c89bb0f12689a6a290ac51
*1109a45c8d234dfeb575acc0d0f3595545bd371d0376b4307546677ac79a539bb058715b2f316b
*5250c1fa402cbba6e80b5c75e43fb533130b385575a57d8ff7e98ecb9218f993c00acc60bbdd24
*77a328b3ab63cbf5d7a01b3892704cf8ae312fd70b861de3f4374095acc7d5ebd7f3eb37dfffd8
*d5ae3a7d912510adc4bd00d690b04b391df9b36747be5ec6ef29956c23041a48787abfb2aad7df
*2cbd1c4b2e3554ac61c8997ef8789ca2865a86d12cf0c5e1895e2e321c005bd5c189ca2ae1f5e2
*593f2d5d57f531d16e2769ab11ba94a06a40553083627abb9e352a6e3fb59e4357cb0e4e856da8
*78480b49000bda3fa1c4fdc64a30098e7080b789b667d82eb046031f1f5affc49c4127c1da6af8
*65f34e8dd2f56fb3b3c2c964708cb3b929ea5279f4ff8abcb0fea104c1ddb9749df56c68bae1ed
*31d914e9d64d52be486755b4f6191c0802b248e05a280d8c7f02ad15c1d01f1911f5338e4699a4
*d30f4728851e7e984e793fbf78f7e6facdeb4be60080c0182224a4d58a63213f63aba3dde7bc88
*bffdea43392c897b3f09eec4500dff9f03c8a9780a66bd49857e96b0b0d00131370de66916bbf0
*c68a4323e5c11143fd39ad13e99cc48491567c319fc8d1003748e27a2948e4d8ed88ddf3660562
*bba061ea219acc31212e9682b6b0a52ec216b402b1e56572c7d1c7f7fc9b1155538875f76ab58f
*07c1c9d8a20e295e64191a64ff95e3fe70be2c4043f42c4b39482eef506314e2990c0af2252ba0
*86382f6ddb2618f897c8b72046b7cb50870ece3e549910fb4e7e345a43eb71240c9d2295cdee5e
*f2d1998877da44f4fb27c35e9365dc31e8a25a2a7c14919c06a1e7435aeca84dd60bf17bc12756
*3554f23822aa9acb6eef98a2c7f19245af6423cbbd88dc3018b4f74f0d8bc07bc50bae5d50c4a6
*eb349df993633a326b63d5ef33c03b59249e12023dd38fdc8202aa354ece05c9fab012ad724c1c
*341bd8324f8365688495b6403694422a75fc8c3b557a0b525b424cd98a388ebd41022b87f31176
*4656e06ed1a11f94f6c8e179de4bd91edde742d8751adddd95c260571a3a68c3b4e79f163fa02e
*ce5d2cdc5143d93a635955fa2d35d6d2b243135642e5a79caf3f07499a9707feff2af0784cc36a
*89fbc4e369d8464f765b2023ee5d56f45c2261496f908cc47e385d25dc4c94ecb55825b0ef0016
*3d51697405f7a5ceefb484f4fbfea8a208f024bc91832a9d4970e8761ace17054583c575346932
*6c3c7ef2dc9c3db10e26848f031b0482a3781a25d15ec424dda3f35640e59d9b9c62957644fc71
*fba956d3486903842be880a89e230e2bed1d722e0610503b6f2f975277fbf6a543dbae831a97df
*6f5dd65891eece43015f0187649fd643c30a4a04c3921ac75109ddb738cdb16b0bd0b00813f8d6
*a929bbb5ef477fff3d9423c09c08be3eb4e90a4f2ed9261a208db609d5fe80ef868625b3c12025
*592e23888338a40518ae633ceb8738bc8ed171d00ee0b70c147b4b51617de480da48406b63c088
*428c28c482f32664ebb4c435ef80b7d879c7a5fc91a31d1ee0d2f00d6f90fba93a2f88a94500d6
*229c0a53eb23480c26f64711abe0e5f6f28f9d39978609f628e1b97dbd0dd62417782e4d259f8a
*2cdd6aaa75ac3fe83368bd1ee7a0aed30f9e3a7ca508c21c978cded9574f5779f954dcf5437c1f
*5876cb3e9ad5bebef888c781ce03fd2684fc6b09499f3b0b040024e3135f3319d99d0744a950b0
*f99a79ee60cf3d6af99c8829f3c152f0a60d2e22b3c57425a8d8e17f7d0129cff31e1f3d8aefce
*c9329bc38412d550c185b4aa0dce03247d88d5a5de6e3de67dfd1fde603b6846062f41e3d67715
*5044473328f5ebaa41ab219d221d22c1d3a7783495d2df29206f0b8eac6e2491418356d865c5f2
*8945686a0ba274a7db342f476121c537e918b69b1c5f754927487651ad616810ce665fec1854ad
*49b343753b060237958d8cfa9341f2658e3576de42ba1829bdfd6f7d4fa2ad54eadb9da47e5988
*ba49ac856c94f743a91aec40fe69b418dc25dfbe9b3250a40e818a75fe24468e1760c1e291e805
*282debd25de3532e3b12524824fbf874a8cbd89e221f0d63a49b3ba8214900e1f86905a217e5c6
*085b132a741b7b76a57f1813bfe6e8639100785ca3e105d5560857aa0cbe64e638afd091a73ac3
*403eafa2f3db239d07376276bb10b63b962b2dd8df7be1b0efff3e8cb7c9a547cc44dc406b0cba
*1fcff74c507632043e71b0f8d9322eaa07ac052088372f6eaeffeb2ab9fae5e6eacdfbeb1fdfbc
*1f8fcc2c7298e23c6ef71637b37c321e27f5d1c52d0fc14b38c300d3c0c4b0676cb127fe53ff91
*6afbe0dc4befc0141d397abc5326c7f14ffd4a266e10fb3eb03703aa3b343ece19eb08068c8cd4
*89f289c87e3409d2be5cb9e36e65ad23fa232e108f87af56683f325f1f8bd680c2d944483f0805
*0cd36c4be367c5fc4406f66809b2cb970df8139990a5a0c3307e909b4f3418c1940f34036895e5
*6b30afe0f577fc2820b3ccf0b8aca8589c1db1970ba950e64b9d0b5409894edaeb6c1acd79a7d5
*606f7e862f18d41e4acc0de4f15a5f987242c4b03f5febd3aea6bbdd1592548a8f2b70d54c2133
*a2579ae9d8cd4ef0176a7c5ca26508cd8505533d1e2a2b3ec5b21c18f43b43c79ce31d17779199
*b176d9465714b8551a5093b28d24915d2351b8474cd645e49c33b6bee3ea2418090a1285ca3200
*5c236416c50fd1a6240fd995d1213569f9deb1028f889f46a5db3240ed0b9fbe5d012bcc2cdd80
*442011f02f584e0ff91e43a59955d2ba69946e4ffa8509d9f98262c8442184a959eefb8731fd1c
*b53ed4411902584f41aec6209f81e241aa26181228c293d025e2fb8007d021a9ce8e6c57560ff0
*ec375c86887681ae57174418ba4b6e644712531e3c9172248f3c6a3876e1cfbe0e63355d3a3984
*97460c7fc6718cb2373a31ff39af958c49719405fef07f2f8a9b72ac3b48086ccaf084c4c2d701
*e775d513936a44168f8e07b48f7fff33ae7faa2965af46dcee975089921dc4c5620871b390b59b
*32f21f5676d9861a76cfed9b293655307a2238a818970cebba7359d7a5b7a43ff01a10995b9f7e
*57f7b1be4c0e8cf17d4906e5e18e836d6df48dbdba12225f1547ec4909b0cbb8c41cf83857bd1b
*04b2d99850f16489ac739dd62daedbcbf9b32549036233389e861b572a72656e9f49dc6623a547
*6d154ed61cd5d6e81ad413cc568981783f4d96749e0ca245e70ada4825ae513c455d0dfe2d2474
*e97ac33edde66bf62f78e849e24b079616fa3a23dd790a3630b79748f5eda138ee57d806ecbb5c
*40af49d4c7006187a1653fe96acdadafaf50e151f024c19dc1efa563f4d5580569a297e99d8b4b
*4d3caad5f012af14527b43be46f9ca7a470ce44e3a538f9e1542be1a3cb63fbaa68dbb9b444340
*261b91b8136c7faca863ad9ee427eb05fd9c80009a4d7780203107eb6c03c52817830d0da4010e
*63ced9bb2b83dff2b2e40d0dd0a3215cb2df40d0b7dee18fb60141ec70598e340ea61930c984bf
*bdf855b68bd1f92b9ac6a7d931c9127d37cde689d48b24d9a77939f625360d02b99e2352bd9adc
*62e17d13ffc9bb44d598ef653f933d3c5566847cfb37f1bf9e10bcb6aae70578c642ef7e9f1e71
*f7be2c7101505f9d7331fb7f4412073e6fa84dc638fe4af199bc98468e1392aa120cb46ed57fc4
*e11fe9530e993008574be75f41dbabd56fc017d37eb2c314fc0eb9bebc2278a9824053a4a41b78
*9037b5f6507a211c4a5b29147d8dd01c4a047b9e502e40835c973600a1ef009fe8b0f6a805b346
*221b6b4b3379a4d84481767048354775d5c549957e4bef535fc52ad618f6d582f9eb22f7ed63af
*2fe5fdf188bd3dbe3d4214d5aee33177327365eba7920ad758769641375347d734fb4a594434e8
*a98e660741550f53b193471d0e8045232f61d0e90996b2ae23db2b7d7bd842a5e03de039395ef2
*78309fe434d49519d52b8164883a0b10487ae1ecf1bf33f6a255f75895f056102fa9fb6b52be28
*a757b748f6f9f6ae05e1e5745461458ddc7bd8053d03307dcba4ad0829acabca6b67ddd1bbd9c4
*a96d733baf770ed6b7ce97398ff278bc794699f6674b2945cee91124ad71c5140ac850471f1bb9
*e8caa1f01399db702116ddd5443a19e23ff8332b1652f76d299ca538876adba93cc5acd211bc7e
*0501835ed18f214e334534826466d3e99e95e441664d614f988787923c98fb1346584a08e80c88
*daa09418f5ff4650b62fc04370f7695ea0ec52a68133aec14dfdf7f55b9ae931ecdce41086e358
*45459e112cd4a60ddd2eada474a9c3ed205bd8c197671500a36b504e8d1084b718f39a4525e9a8
*4f24ba46d1d527bea63e11cc7e472a276881915b639a36b1a6b9b407b26ba0b63e3b51f4b6d96e
*55bc9d62f7c8095fff5cf8448034cbcc33ea2aba8d7151b2caaef76028dbe073a4af29c8505a4c
*64a1d2accf4e1c29c13b38ceee285a768087831375bdf37ac4ad913aa22a13525c6cb68281f154
*f5ea642ffab34a58643dba0e67274ebe58a4c5165ead08986f8cf60d1b9ce6cb820556e8f06719
*36849822df577986ff731064939213580e3396927dfb27b6ca5bd5f1d5b0e4e5f95b254c31a846
*f21e2cd2d5ab88d9ef5e5d7dffc38b9bab57cb5b4ae2f4ec70393b459ccf00da40c9ebef87a608
*ed4a6423b3b07e5bb70c143ba95065992f143540b41bf8d94911dcdefa6920dd2920e5076d4467
*67b37f00504b030414000200080045545939e77b0c7da7080000701c00001e0015007365747570
*746f6f6c732f636f6d6d616e642f6275696c645f70792e70795554090003824a0349df028b4955
*780400e903e903bd59dd8fe3b6117ff75fc16c7090b4a7a8bda24f6efdd026d73e34480fb9f469
*bb106891b299954541a46ee314fddf33c32f9192d67b0714d5836d919ce170e6375fb4b80c72d4
*44aa6aa0fa5c1275552569fb0bd5cd79d78ef24298507ad2a25355232f17dab3ea38898ed5c395
*084b1cdea922b57f5912e3a7276864ff898fbac62dedba53278f7e167fef764d47950aacf3c0b7
*d8ef083c777777effb33ed1bce48e6e732e24424fa4c35117dd34d8c2bc2a8a6a4151dfc7c16fa
*4c06da3cd113573bc3eaa7338f57d0911335f046b402787f12945092398a1ad765b0e4345d78af
*899624535c4f435e649561f6917337a4a58463a302aaefe06314475081ec33d2ca915c24ecc2b8
*a6a81a2bc65f3a254b105c2802ca51b094c816def9d6f968d7c96745ae724219acb8577294a04f
*e4950dd7fa22d904e7016961bd3f00bc8ade3055f4021f282891031f29ca5679d59a6fc65b5049
*4f3bf12bafe5800b54ae78d73a13e013cc526daf0c0bf1ad8ab5480e768c45ba4916a4a4fc1763
*cbfa55169b0b41e3fff96f60285a92e1706d0c6e3462f8d435138daeeb3d1cbd4b871e6282c75d
*d0cf38f54b9580fafe8a4a21ce0065805b694cd148f094086f603fa344f09591375a8e576f0027
*6b2fb5535f30aa61348f3bfeb30cf88c60dbb1dfc59c165cd2f566d29ad3cde7c506f5e65e11ad
*5f9017afac309689b7f89afcb3efae08f101144368a327da1190d72aaa249312fd89c8692447aa
*38311102acc738454f79469787c9889f9cf430e9d9afab1453c7abe6b5db6e0e30d589ebda525a
*10973e90d448d048c60fbf2f8a1903750d1454ebb1aeed7afc1d010254872387438ca13dcad7d1
*5f853bf1a4e320b456dd4c0aa8f7df16a228ef3c9d177f72a65fb07283f339b7e58eceb560bcc6
*f9df798f9183930e3c106d90e5ceb8a51a1b709db1b4bbe12f64d243d051454620ea00c718e7e6
*281442c81542088438d172a5230c397f7f780c231846dd6ec1833df8d0e1f322c5e8d7e47bd9a0
*b09e4801581a3ebb5daa742bbf5732aa22e0568cfe98117aed16df3a53fa3d169e9dac0eaa814d
*5cfead7e96a2cfeff387c85d3a717c246f3dc74a0d9dd079566545b1dafd7bde9f20bd81219099
*c90c10180762526c2b27081a6b7881257a90003e7377e8e2edbb25e78f864f38070949fbc82d4f
*63d984288ca2d992193ffb805bef1f8d25f13d981172098b91e741e5ad52acd83d2623485ad161
*e03dcbc98aba9c355fce5216a458ba8ac942712a644b7708b17d162d71901f6747b4aa88409b25
*75091c3d732cb2d82f50c7a8c17c95401193799695e0136b7d0060b60982bc4035932501c57b9f
*3de78aea61bff441ad391c124e60845d7add7bda9cc3a233b5098ffb1a10e003ef1450483570bb
*7ce34aafc64078052805f95da35971ab3cf19a60ddb8baccddc64551accc9bd41537d06641a2a2
*c8b891c7d6c1f1db459e17fded4c0fd94cdb60f083ecf956987b05c1c17de6b3a4b6f07e86ab71
*71a0dcaff0a3a1c4e57a199836765d43cf62e8c968df5303092ece2ddbe20522ac8c8cdc2f1836
*ec593af9c024c126abdcb1b0c806b4e17897163ed2d23094554959e94b80d8e89bf5d62281a894
*ffff2569a907288cd003460e5e253ef1fc660e2b1e4146f7b24bf505e56ded5a8e3ce3a7532dfa
*5666b3f9b8a89b0b8b93a46f03d84d3a1737cea803cba3428b6019516d0097956d04459b019747
*c4a905b086917f5aba133eb263c8af4d069fcf988198a9acd95707436b7e1b40a0ad9c72d7cee2
*f661ab095612b6969cade1df2e3d8d416a69d375004d765b0e61f37e05f151619f0b5502f48c85
*39467b38e0b1d744f840c4d4a29fb8459cd0909aa86b5f4a73fca41ff3cfa5ada07f04dfa353a7
*f3803df6584296f0e9d79865f6d2cd9212a486561f767e0217038cffa1faa3410894c7be3836ed
*a965839dc85555ae47fef31dacbedb5bc93f5cf519da66a4a7ddc829bbda84833d35d6ed7335e9
*4479a5cc7fb7f0c639a3a3541d8f2a5f1b502082099bd1b0c55e167f09af9f50a87043819d3b31
*e6f2dd0a422f248f12af569e79d7e1372e6bb2849969f161587a726c7197c781560974314ebc22
*2437db5f38e80b4095166e3de70cab3ab080b97d10bdd2b4ebb0108d2e58246112a0a2c8cff208
*1e807708ddd576b85a26fc4ebe4ba0403da232886369ac4a7c50ae8aa5b237e22bf9923ead8032
*685d7a7e794a7b2d07df4ac19bcc36b3f046511bfca639f3e6c947ef65e91905f545098254c430
*8735218940d35c434416baae8d348c432b3df23a2c8c55afc7eb569e4b53576de4e3ecc10dcc15
*22d4577cd0e41ffcfa7e1ce598b242bf8fae185022a8990e918d3ffbdc9b174d6bb980b9db66b7
*ccf97e7b50c8760910d453dfba7059f337e8793acdd8f812a618d39f4e8783cfff965705ee336a
*1be4ddcc5b6c09d7e1fd0861f069b646a7f8670a8d19092278ee66ca6cfc5794c0cd15da123699
*4f95503840f05dd6328b0b618e7850fed2f73b3f6e60928a4885e28b05f9e2a0773f2c418e31e9
*d8f1cb9ebc5118f8e8da0fd08535c6b07ff7774b7ede41f0fa8949f06c3c5a03316bed2d79f115
*f9d071bc926ac52fc0af5af3cb72bc1836f7aee16e18031fde70415bcec7f8041f1c12ee0c74b2
*a568fedab8806dc89bb9bf4de356546c554d2715cf570d5062748c3238206edef76e7ad7212a70
*67d77d89d9ce3d7ed38d0e6cbbb5f67d5812e2fe263ae8effe771df6d6f5f16775da2f126e77dc
*47cab6aeb36eb5d240e2bbdf7552b1ffd860f10c1cf2cd2acf55125fd234aff8bc84317b1cbc2b
*afd0cd9ff855e53016876573cb1421c58130cdcfad4d8f3e2f9a42c68767dc642590a96d43898e
*9be008fe888bd3b67c576081c8042889b06988b22d64d99d6920b71a8afd2eca105e7342d1a38a
*e7a3e3845b8bcf8b761f311acc216f11eae6d97c877f78990ceafeb451cd2820b1fa7faab06224
*2096ececf5a33eefad8bbd810cebfea20aff5b41e899a06cbda7dd33bdaa7bbc8ef9dd378a0f14
*cb3466a815f18a70d5ac6562c2a12f684b72df7340cd7dbab1aa5058884c4117c1e777bbdf0050
*4b030414000200080045545939e60fbd5864010000e30200001e0015007365747570746f6f6c73
*2f636f6d6d616e642f736176656f7074732e70795554090003824a0349df028b4955780400e903
*e9036552416e833010bcf38a2d3d0424ca032271ea137aac2ae4609bae6a6ce435a9a2287fef1a
*0c218d4fd6ce787676d6388cce079048610a68a8024799f66e0052611a8373860017d2bb1b0661
*e57fb8ee967acd25378695ad2486b6735663cfa2634067db932095659d114440e2acb84cc50e2b
*8f19f0c9f3fc835148c26f06ad4a1204c181008d46312b9be95251e77186a1813c0a034de36850
*c9fdb3d972dde91e9c0717be9587c5df22b78a69f0932d48199deccc650e88c563b58e778fa729
*0a6f84e4959814f1359436f5af7fd4858a72a3b39780b68ff4eb2ddbca9a9d758304b49be0f18e
*c6833a129ae6b0e677383ee08b17cbe2938af75790ce1ec21c37b88907ffb56b282f8fd2b13923
*5541beabcec294d1c63c4caf421aa495d885821d94350635f048cfedd9222b344d9e4680b8bffc
*99b7cf217e1e8e5e4c6656afaeb7f2933b7e713eece4ee73f7abe615d57175560caadaa4aab425
*7f69799165f607504b0304140002000800455459397f27593604030000e90700001f0015007365
*747570746f6f6c732f636f6d6d616e642f62646973745f72706d2e70795554090003824a0349df
*028b4955780400e903e9038d55db4ee330107dcf578c8a2a2722b116d87d41f413768576794328
*729b496a70ecc876802ee2df779ca649d31616ab527d3967e6ccc5ce19dcada503fa3db6ce8380
*27d516158233e0d7c2c3b290cee7b6a9a130e834f350b5e81cbc58a32b104bd37a026274060168
*e5b2f5d268d0a24610ba8067b48e36529065c00156552e75696065ea3a00c8736524d9f20684f2
*68c91401eb94e8862676a7a83b57e60536a60d8b652b5501461599f31b85a08dcec83afcbefde9
*02b92043a5d4c4d9a4635c44f456ac9e8087984aa9d041692cb48d32a2083a5ed6a8c1b61a288c
*db8d5fd3dfcd25ffc1a3a8b4a6eec2a41895e37d047c4c91ac1b63f773261ce4c32aea8fdd86f4
*1917452b252893c3793c4293eb28021a059620b5f45228f91773d384e4bad8a12a0902fd1879fc
*23f0800d2bae4d1e32b5805f46e3d613958774f1be5c37338a78367a3883bb2e69d34c09bd19d3
*18bb046af38c454871e7a51355483b5809d10448bec513260567572914cea7a0f019d5e2622fae
*83d8fe434d263c8a878e168b8992ae2389c65117ee45fa75cc827e76e0338c0abdf0dec6037fd7
*da29ebac759dc3d2fb87848ba6217bf19189306236e867e949c4819cb0ec24755a19a59801257d
*af36f7d7570fa74d5153f146f8357fa40b157799d9ed2c85c3702763b29f24c9113d19fb8d5aff
*b0c1ba24d07edeb77ccc76d7987476ed81dab516b76f80d9de7ebad86d93799315c2e3a95e1d1c
*4593b1d391d7e20973d7e06a2cfa9ea63e1bd4c44725e254bcbc3f8fc758c9e748ea67dc62a3c4
*0a6396b194e56cefa29063c2ede93d2968c02ba9f1f28a186c4eea69312864e7fd6c8afd7e1a3b
*aa9c4a21f4fda46cc1c820ffa8a0b33fa6b52bfc760df3b7508ef76cfed6db7de75ed859fa254a
*aba9de95c2229f9027dce413150e7ddbf06643af98f3f414c329bf47a02c733278cd7aa719bed2
*87a17bca33d2232a7a65beae61ded93fe5787b0299fe34e28f3c6d2b9e6e8b39bd52e19d0cfb14
*5157bde1f06152547aae1d5a1ff7f3025fe3dedaf9454af2fae6389204b35d4bed753785627b6f
*a7c63f504b030414000200080045545939ba48756d3d1100002a3700001e001500736574757074
*6f6f6c732f636f6d6d616e642f6567675f696e666f2e70795554090003824a0349df028b495578
*0400e903e903a51b6b73dcb6f1fbfd0a84ae86a4c563e474da264aaf9d8c1d673c6d1d8f9d473b
*927ac7237127567c0520255dd2fcf7ee2e0012047927b7f5641c89582cf68d7dc09ee749de764d
*5bd7858cd3ba2c932a8bf97ebfceab5dbd58bc143c69394b5896cb56e4dbaecdebca970c419608
*020b82a76d2d0e0c76b2b4ae5a5eb5d2f3bcc5e219fbee3697acacb3aee04cded65d91b12d6777
*bc6901b26c9236dfc2ca43dedeb27787f6b6aed867f16f1779d9d4a265b58c98e08b9da84b3610
*c9f4ea4b45ab5a46ea803460810b518b1ee8b9b36cbe17f5dec5db332f11da00d22fee19f8b701
*0086efb968d7c0cbad0bb7cb0b5e58c85ec3ef7fedf13577fbb5e0b2ee44ca7bc29a44480e9f7f
*ea40ac254a326232d9f17595943cd2cb70a0043544ec7ac1e00fadf7df0e392fb27591571cb67e
*5db5e2f0aeceab366279cbc59ae38775835f60b9add74823e2d6e2b0797f488a3b20e53e6d45b1
*58a445222533961168f187974442c6652af2068d83ad98977ebcd5809920824e027135219080e1
*8a3ee29fc0c73ddb44f2951f319fc35fde6072686e495ee5d57e0677cea5d7e399f9e3b120e3bb
*a42bda4b9044c3ea1d6b6fc14e4923ac159c875e185994b4c97e29efab25c82447612341c28f46
*67785f651993dd56eb831958f6e6151cc2cce7aa2bb75c4cd1672037449b219f880a3f30d92665
*c3021eef63f6d9c5c5ef2e7ef7d9e7e1c7a0db76799191e0b688f043c3d37c7760fcb129f2346f
*19c0209a040e7a025b554f587fefb2fe0abeb784ec8800aeb4bc6f26b80ddfaf904c8527afd2a2
*cbb82d81c9fe1b653d5b70609e54b6018da43951dc0d6dabf81e22d03dc77db0e797099397335b
*a35993ea79d05be8e75f17fa8f72911db094b77952e43f73436a2079b1d34e44be0cbf52f8459f
*049aded6159f2e1ad91e5b477739ba483e32b70874afc9608eae8220d6bd3e57ec620a41ca9aac
*6c457dc7abb575faeba490ce01f7b05f9aa37b91c9e4be0f6e2af22070c44cdcb26467023a6a53
*87309ee5ed1a82c42edff760d6b760a44b8372ace15f7c43b67f3951fd2fbe2b16fff24219dc5a
*9b83f995240bbf1b51c920fc75846ff82d5cccff3132d9e5d5c888d85356d4df200418db5139de
*f3562d85e1bc3e2c824f59a201dbf3cc7c850dfd0eb876c6e2c38b319808747aff05fe995cadce
*a4cfce149f3d63914b85c5811263aff2c714538e1f92a2e35f63823026452439f8cb2b736f7f4b
*5225b82981de9bea1e849f8dae364672ae451f41e501eea5c74b76269767d2636713344f71e230
*d2ff9aef1c2f87fc0a1d66cc10dc80bde646ca6e92f42ed9f335008c36b89123200cc0d02fbf86
*682181ef4735a4489d80058b1cb5af929d209c6447bec1e38747838f95788c25119efbfd45ee1f
*e7fa9315ebc9b99ce7449f0460989ac5ff829427182189c6b0a17d9abff421588ffd48bb6e7acb
*d3bbb513d16c4b7fc63e704ce448d2bd45ec4098985d6c79c57770f342b291d135cb74de292d04
*eaa6a7642c625bfcdffa01b31cfc95b7693cd0fa6c2ce291b24bde26108492d87152cbce6caadf
*ecd803c7abb4051c49d3f08c25a2ee20a947ba0be007894ed8bbbf7cb37cf3f6f5b7114b20b7cf
*f7b72de6f40063e14ac9342b80de418a7bcb48687507e497c91ddce6602fb0238164a13a308959
*4952308a37606c9841f0ccc206a9099260d8a0ca642a80269b3579cccce1f86c4d99bca5638007
*e7a9ea961c88aa97268beff861b51ae93d2eea072e82706c6700ba3e21571794e25a66ed1865f2
*c169ff7f82a9feceec2f880701c9feba16eb8c171c7e425fd3f7e603487db83d23ccae9208ad33
*e52bba942d3ea188fb1131b10d426d500f1bb37383d141a14761f2b2690f8335812de93d24e26a
*49eb5070603d0846d54279824b946f63ec0453da6c14d9446cb8d9c4f3d80813033990ea361b64
*7db3d1a81d9469524021345cfd9b8d2d903e85d8c4ce1936565ef5a813387259373dbaae2a38d4
*44964cf823e8030a2b30fd87db3cbd558e90402925a848213cb243d7da8214465e538be636a960
*09d1b10084ba21b510453b524d34083d73215ad1f130b675671b3bb23613282d89cf1986758316
*80c4c452c56530938259a7999b891c0b5545a44e532828c563144f309b577b67ca4521ad530119
*caf500e480fa87254589e79af5045538f922009318fb2907114fe953ce376736aebf3de1651fed
*58a858e419ca6728714557852cd941f10e92ac201ea76448ede06c1b3c8d6c00aae84c855d902a
*2bc138f10a02ec7906a914567e088a905b8e5890ee960f52d081164999b7245416dd771e6e4514
*a004d87536d5c1e83e552a44418ac31a381a8b7987f774c3ab601098ffb0f5c74ad3c61a8ced52
*ada4452d796029641af7668c15187ba502d87f2dfc7999d0a94a28deff24087030882979753767
*644e6eeda4fcca9e47bda023c97e9f9cb3732bd1b70e02b2660b8af20ebd3f389635417602e116
*2435770bef206db9553510264d43cd06018d3768b393f654d0175e4af342fa4ea4519fe13cdec0
*259d64414fc3aaff299cd9a14d027629639bcf11f1e448c384a3fcee1b0846024a0048872ad540
*28f2ad8cdbc716559c63e74cb24685774874b60756171910aa32399bfdaa389aa2d2f1cc730ef0
*46d6e404e4aa086762bced0b00e124ef504b666bdd840cc6d636694e0cd98b3fcdcdfb1a774c82
*de73be1a03cd6e1fb517f0da085cefb0b9f56380f743bc12dd1593a25a2124bc1ce83f07069642
*95947438ba857d7810ced28715bd73d7a936439b97fc4b1b3d7e88c1fc77f843e02dcffe71569e
*6596f2b4bbf669f8b1527f42d9c4ed67ba319d28045671826353bb41c5fbf06de50557fff46ece
*43cfb709b99fc06245821743865d2fd8759da93d23afa5120acbc4082d4ba20b831ab0671c0c95
*e22433504aa330081b70fbf4c6c5af579737d8c5bb992c62c737af3aae3cb1aa413b15a458782e
*465e88d000206a707dea4222ae49691c0b5ed6f7dc58d0fc5d34f24a625681473e06a99c43341a
*efa4a46705b791e0108a4e5e514eaa0496928856e21824f0bf50263df9feb91bfdac33cba409c0
*da62d91479ab5aff6a3ffe1ef8d7d5f5e3457a5db9142b232b08cbd5c50dfc8732dd0fd10d9301
*3818e901bae614056605e71b04bfbd9949ef20090733222a1f832b88ec4176f5c54d484644d98a
*ca16770c6ebc200bfff405b93ec2dc9c03d2d0c9d1e664f6c73f3f96c5ac7c0c85e412b1e48948
*6f550a11efa10e698217a1b224e29a37b5cc69b0f0fdfbbf7e142b658f4631542243e4531459e9
*b6a1e3667991a7f261afab044feb7d95ff0cb68cb6f7a9b63c3ca94cda2f99bccb9ba64f38d048
*c3ffcd9b5caba479cbea488b853aee00b0d6ca27199ffb9ffa24486cd892e1881a9c1c56a6fa43
*ef57bb6c2d1a94e1ff19116888d6f6d31c2c05417634cf894862983c8f4b813e86a25ecdaf51af
*70cb6b4d9ad58a1e0ebd03c334cef3f0d2b66e9170a6733bdcb64e28879cf21b5e71811df40fdf
*7efffee5d71f28a528932adf7128f331ceda89a759e85b69a77309cf426add4465497c6b54d89e
*11d3c4d1068f7b825653126c38cc234337dbd013d1150298df06f9cc37d71c4141ed62b75cf0d8
*ffb76ba8509eea1502c4a9d40b979dfef6d1bad65b7acffff0f93984e56948f5ded69063b07f80
*8930205480c7cfceda6f136c47e83665de4aea407f391d77c221d4bd78c88b827ce3a11677e032
*02111507357a574f00e2e6003ab8e745dd78315c1933d4f9ef0a8e8214cadc4ced877f6b94aa57
*d2887a5bf012b0f8e74023703b9d9a81c49c0eece278c57e648a747cbbdb064605ab00410dc85c
*0b024376553f98e9b619d007e607ad53f03afc42330bddb74c71a220595d1507d58580301cb1a6
*485a0ccea0ae8c4316816537433b510f228c996377b5ca741902774469d90e5510203b00d0b7db
*b5f0317b25ea5fe78fba98a0ee3014f2904d43b0abd88f7064fd304e761011308fffbbba5cbe18
*622792040bf6e38580e83861e2f8f35c7d41e95fac5922a0218d556275a34ba6244ba8e050141a
*c62eef6f5fbd7df3faeb0fdf4139ed9d1a9acecfbb3ab83ef47c18871f2fc6ab0d44233efddc93
*468a9c2c53cf6a6d05bc17c7a7702e510db0fe74516d45c4defa261d03471323cac3a36d3d0311
*84643a60f36507071112266bf8e04350d8abce1af5f8ed0ef9883a4a66a09e76e3799265bdcc83
*53c6a36a28adeb399231695e1b00f718521edd31eb622ca03195128ab1a38b2ae95f671dbe7d80
*4326f34c576a6e7faf3783999b5bb5f34cf34c050a90aa3f22c1674123b8ecca640bc606111c16
*0aead80d77db81f963a1fa940efb8e7cfcd034eb46e9c1d05880f89c11b691b1f8f36d3d55c1ad
*263a87af8e4e256f3e5941aa7739999cd3ab0bd4235098f240c14600aa1263f4630577e34c051f
*79da014b430f3562630b57ad3419cebfbc607d2b722409e6437def9902bf77164ba77837ab085c
*cabd0ab090bd760daa08075b5202d225e1d2ed7bc9864752ae8b020e3b99f5e067f018a1bbf9aa
*ffdd55d9a5e71a3f228b1d62ac9bc2b605377ed0d629c411fbb72e9dc1133f0276905d9f04a746
*e1e48df63b31fb15014846431eb935e828fed8e2511af2f4c4e1c9c0475e6279708f2c5fa7653f
*1fc46cdd44ef6cade7af43bbd13f2615fd2209af4ba8eba0427b0e551798cb2e7f5ca913acbe68
*af4227784da2877972738a34f57864a08b6a25c806677bad84a32b0af5aa63714cec635e7054d3
*3343c7c5aa5b3bae2aff1b249a467b73a33a4d5ca6496362c4c72207d073e107ef5f7ef8f7cb1f
*3efcfb1a2be2d03fc728c3720906b8e78fab17987c8c4732cc1a2b98e7a9435ed73f70558e8ee9
*30958df4522e87184a992e8660c2c87c83028279a29e5ff29f3a5ea51c2b4ed402c609c483f33d
*ecc5408a234a5029e4ed92a276dec60b3b02cf8c3fbc87ad170e0de7a478480e5253f0eedb0f6f
*febe94eda11882ffc29e9078d795a76a989edd70e174a1ec3f83b84c091b8029ab7e8222c7199e
*cc4d8126030f1d17d12926b30ef3320153505c9f7bb530018efb27ae9000df53dfdf785cbfe2c2
*4e91e88e7f91915e998544ad8c008fbf5e7aa69501ae4db69ca92e166877781e0129964ad5472f
*7d1d346982dd04accee84580db9be8c9992a6866064391a3704875589f7915a2a561046b4d0892
*1de6cc1050c00745e0ea2af27fce9b3502f911babe15fa555fbc1f787c39fca839c15ded61bd2b
*92fd8819f5dc39d45609d7e25a1552725d6f658d938c278cf3a3e6d4f3c5b9f7e357efdfbe79fb
*cd25f3f5a1d82bf1cd33119aae424a65bd45bf887fff0978db18cbf75265827a06655eb3c94fe1
*aa138934bf9b61364bc45e12305c5eb1377a0538b8e6e849dc6909e83721aeb61656c3f80a9b0f
*2a4658efc5834cdd7263b2b1bf05d77aa8f2361ad8211f11ac53d75fed7278d34fc7b0a694f6d3
*19b23c9d5d605fbaba3a9337d7957edea710b379e2f03c204319193237fbcac5b305e5d933785f
*e3a4766c68cbb6ad9b021b1f14029e922eb8a0a4ae670a1932a48377fc200733baba334df7d88f
*5e845717e37e254aef0e8536097b34feb4bf6862069f52985cf615d3c0c19258a0ebcae1bb9726
*921e52df2934711f2a22a11081153ec1f9937011fb0e1fa1d8a23d093d7d7504e04e2393a40976
*111804bd4ceff135e7a9e864b0456c084e101dd43eebe99735e0d4280791d19770e8d51db5bbfe
*ac813ddaabb91c0945b7f19f1037254b133bb127e40bc3522ec969210909201b428c2a11a14912
*8ed7dd47a23a0c70f59689526d05369589891837a3e99fe4a992b14931d0a8793375782b15b0a8
*34bb6c5a2f673bfb847b65fd439658bd9c5363970919e12924835af5c02c328b31e94a06e1cc4c
*af0f572654516f54bd4656a73b699625b551cc599cb6209a2b1e9852ad3f7da367f9d691718392
*20be3fa537790f9cb20b7a51c996e2d9b36790a2ee304d1d72140c4509dd57fa895ba5ff0d50bd
*d3c892b97fccb1189e5e4eef5b6bfc6e3dce3749eeb01af9e27baba641b3a27c191b054e0a83af
*1d55e9403f06c2fb415174193f5f0a1a505fcbe7bf81b8871842d7fa68d3e59137608ce6780831
*ccf216d6f205c6ca678bff00504b0304140002000800455459394eedf3090c0500008c0e000026
*0015007365747570746f6f6c732f636f6d6d616e642f696e7374616c6c5f6567675f696e666f2e
*70795554090003824a0349df028b4955780400e903e90395574d6fe33610bdfb57105a18a21a5a
*8bbd6691d3f6d24b0f2dd08b37101489b2d948244152f968d1ffde37fab264c959ac0e8145cdbc
*79c37933642a671ae665686d30a6f64c35d6b8c0be99a6c975b9ab969fd3dc1567f522b336a87a
*b46db5cd8be76cf8d4bb94ca07b299006b731258759de76e58345e307fa615c1ecf32973d29bd6
*15d2ef76459d7b386b1ff2bacee4e994295d193ef04aee770c4f1445bff5162cd72c85d581ac28
*8e2c8271efac328e85b364c4303f4938ec3acf52fac2291b94d1ec81fd2c4a8fd17ae932d36178
*801cbb457a783cf03e00e221162c2ef127bae0053366869f51223acfc79159858f2aa8bc56ffc8
*119f7b595743d6f4d06b3aee0e8011ff77a3e505a252fac700286cd66a982b2dcbc972649fd5ea
*291697578489c5e22d49263ca9b2a22941a3033e0178645066455f341e8d658c2e7e4fb9973a6f
*243c170a487f85829c7a6a89139fcce9a144c5f0b70f4b35cb0865b1f0229d87f3e49b4c663cb9
*8ba73ac7577bd2c5079d1912992dad42ee9023ac8c4f6d1ecee9df46697e5d1531a5972cdd4d1b
*6c1b3ad5cce0660a70addeac18d6a7ed8c476af1057de235839d3eaa6aa2ab3ce8f1995102ed97
*4c9b3033a9957e5ed8dc2fea307673ea646330138293726e8e7e77ef19183f748bc3cb4c32f58c
*907c43bdfd07d1ba2ff24d166d901c5ead267a62113011d11fc445e9138beee658f33da024e78c
*9671962a94dab74e6653ebf24dd005b7eea530f69df643303eb4f7f844dff08908ee3dcd81bd8f
*d89ef199f404db8c916cf73e89cb632e49cf938b7ca8ff068d5dcbc861983bbd90e1c56fa47ded
*f48911eb6e065ee62319520a5e05791846a39f5c08ce3faba691d0992b44e9af2bfa0943aa0ed2
*31d0607dee87c2e8e04c3dcd5e25fd572a18029df3c06220c54c7996d7aff9bbbf82cb59fc393e
*78697397075932129640c2a7dc95b5c471622a66eb3c609c3729c354f6a107bbc2196d0edeca42
*55aae890d285151d0948cf6256b338f52ffa3366e3b7bffefc1c2f931c3407de290ae6827f55e1
*ccc933618000e1bb1106366bdf59c9ba01bf6a89a186696eadc450a06d5e18e1e04d4bf9d49ef8
*5a798262a24daf7d8680589f969787fc4dbd8ab1e610e3ade772caad247c253beded38ca329274
*67edb3516b7cd5d670b81fd84f9f20b26e040bf9361fd8ded6d0ed5bd8eee8d189dd3db0f800d8
*e7536ac339febab9e9a3f5c59f76bdbbb08c578b7edf23b136fde144aa8835e24c6144fcfa1427
*2b398223c988f660252370070aae71b5e4944b973d8fd3f9113e9d212e4720ba52c4df75bca566
*f85124006d0bf682c037bf7773f02b6bba330797903c040c89779f36a66cd1a9c7bd7b146c8ff3
*b349beebe826060627a8f4672f323cde1fbe3c2682923dd2af4dbff56a95be3a48619b6a345c55
*c14e68f92a0ce6d136a1c8aeae03c888745b39ba737c49d22aab4d91d7fe18d3cca41b14d2bc9d
*5ef4cb9ed24a5c7233a692b3a0c319bae060459c65749fccb2d4bea3dc37a11a209110014965f9
*80d6ac527485442fe76d1df89e949538daa6e1f3b8f45154da35ded02c3c3ef6979026cd70e016
*c478868e3428ab2c8b050c6fe271db27a1596307383bb6a94df67c9066e2b7fdf7acaf105fcbe4
*aae1d2a2365ece0fddcd11b539d1fefd6fb7d1b8fd04985d7bd369324e78fd3ead6e2cfded79d6
*d50b83d73352deee56f0395e5a08b57a04d497f5f8a0f167ec6c57e0f850832bc78fc52a4e0517
*7842e728aac75a8bfff0b08269d06583c9ea66c7ca70d2c00f07c3ff504b030414000200080045
*54593999ec28779e000000150100001e0015007365747570746f6f6c732f636f6d6d616e642f72
*656769737465722e70795554090003824a0349df028b4955780400e903e903454f490ec3200cbc
*f30a4b3d24b9a4f74a7d42df802c301495a5b221fd7e4995129f3c9e4563c725810d525b0d5156
*5352c26c5726df6fc410d2bb7085815140ff815226a2c820e7c12c37057db4b6c5680df7d3b31e
*37f5135872c02dcf42d11d9e7d2ef0c017813426a84facf021c0be3709d9c3863158308d997285
*8c89ae1bb1849221645746ca1ebaf6747d3c354fe4bdde25d3324467b1d143a92f504b03041400
*020008004554593908a45d7a9e080000f91900001c0015007365747570746f6f6c732f636f6d6d
*616e642f75706c6f61642e70795554090003824a0349df028b4955780400e903e903a5585b6fdb
*38167ef7afe06a10509ada6a9b49a680077ee84c9336334d1324192c168961d0126d73abdb9254
*53cf62fefb9e438aba59560bac1f0c8a3c379ecbc7437a9e170ba54b2d121546799ab22c0ecb22
*c9593c995ca545c2539e6945f48e93778e90504b41892ad71513f1ed1c2958f4996d39d139b9dd
*df5e05a1e77993c946e6296934712973a988488b5c6af2637f39ca25778bbf59f97d1255b0e7cc
*d1988f1e855b4bf2ed44cbfd7c42e06748764ced12b17604697c3ee15f235e687265662ed0b816
*3d10b469ab61aedc48e5d167aedd579130bdc9653aa9edcf36627bcba4e2d2cdedb42ec002f7b9
*668aff7ce6be4a991448edbea37b2d45b6bdba214c11379e4ca2842945acd3fdca49c17c62cc8e
*b98aa428b4c833b2205e1599b5c898dcf703e459967717976ffffcf8b0babbb8bdb9bf7ab8b9fb
*1770523474fef265b12f4458ecf52ecfc25c6ecd37b57c256c6b951b550a381ecd24fe7c2a7991
*2ba173b95fd029a1924eeb45b0492624df9086863cc67cc3ca44cfc9895a7ae464c0a460da12af
*76f9f34c725580660e0a3ee5196f69a09009108b3dd99449421c1dd1fcabb66105c3bf7049bb32
*c536435b55db56334b3622e10a9d5679b3541008b22db65d0922867a11da6e59e0dffbdbf7c4cd
*a2bb6214d2886cb32fcd689de7096759dbab079bb5962e5db8374464420b9688bfb8e3f3154f36
*c1bc168e9f21862b6329c7e0d2ee5201f9f49ccb7860a915a5c345346d55fb77415ef59671a70b
*72c91248e9ce4aed9485895db3970d24ead84ec4a62700f127cb75a3b0a1c59f6442b5e0ebc648
*3555ee77e84c625e974a6398c86c6683944b18d6aa20763bf6859314220409e07504046d137380
*b9ec8b9050338038abcf7cefd30f37d71734e85917810380b8607a17fe3b1799df703e5a8e2504
*3cc4a293110d3acc568f61e55f6183ca97514f7eed6f9665799945dca77f9adcc5ea477814992d
*881345a1ea80ff803d32180666b6c12c6c7ff8ff3d60aacbc7e51c9dd37659f5c95cfe7d83acc9
*4524fcfb98b190b3808b439b0197d5b9d2089b0f6a3cccfe4afa966b400b832033e34283708d69
*e36a9d474694b60a754c65eddb7185ceb7230a5be53fa6b08e5227d7bfe9d043479a9943886f50
*4096d940e1d79af0a097625d622d9b8f9581d3efae7cef536e9a0583c2248274d100cd500b9cc9
*447049aac6c66b368a5050cd4e49b107bf28103735124cac80fbfb6db36136878959f6c744078d
*5fda2c28633a6a53cb7b3f907b043481a7ee7f4aae60bf07907a089e70c2ad98dc9a63c8830f6f
*4abcd92ce69a453b83906682798dca651fa13a607d98824ec3e3e9fc7469d4cc20df2296cc30bb
*417087bf2bdd747ebe9330041bb1dcaf2095163630f6a3f2a675caa580fe0022872d6ecc349bb4
*8044834e44e78267bedbde94ca350d2cbe34b9813d5c55af0e90dd94df04b1119da65674eb3405
*4f55915c2ce8daa40ddf6ea939dd0ed30acf14e86556691e97905b7e0ff51b0ddeba1409f4ab19
*003cb655ae410dddc0d790347cf1ba310fdd009c5d4ca77316a166805ddcd0aaba03747d4e0b99
*eb284f56552202f1eb3e893d0b0e770478b332fe0a7a0cb5ac619e6af980ad8a1f9dfb2e12d36a
*aa4f89fbd1fb02ac72a5d4dbd4be36a129b12e09dc0c56b1d84255d1398c7da729dcf1af76be6f
*dfdf0381270bc8081b7a59a4b41b529c9e92bac20542751d4c5cf40f7a039c9d0f9c9075f6d9dc
*40603b515503e077f43422793268675ca66b7a2cf73af2e9f727df23ad64d0a5398fcc78f21d68
*6599110f708de9527223c23f5e94e405f142a622ef78d3d1f975c0e085657570d00116c5a1912c
*0caeb012fe01be2286595bd3e03456e8af4c8988786089bd0a42fb17e5708933973dbfdb0f80b5
*73a4ec1cda4188b485dfd1ff2bf83e76165c5f5d5fc0d56f6fee2e180f9c8443f7a18b796be810
*6366fbfc59e7f7fec3fd1f97bfbffbf8feddfd9bf3b39f2e7fffe3e3e587bb8b37e73f9f9dc2df
*9bb39f4ecfcfda578362d516f694cd66143758cd356995c56dc20edf0b3482b68c8b91c4dd8143
*37f0bb473474da90be2c29cd818cdb0b85e6e90144fe009d7c16c3e19fc2ad53143080104901b7
*3ce71f850e47aff7eb0ac1c2372a02f28f85fd7c5c0e34ded60c38d3cca07b76a196da4c33980f
*35716d5d026ea080bb471ac70d5eb4e82f2e37171e003e169d617e7cb51c6472165aa2d787441c
*2e6e23fa3cefe8a621272bc30f483094e1b384b8f8ed888f12420efd665175061d9d6925a198e6
*e8c7748661fe8534db3e812c1895b6c94697bda7ec29f346498e6c0d42661d803869bd3a7bbd34
*88f924e9b027bbbba40126a7f90421044e79c948c69f139171e2272574e4e49a452a980cf0b7eb
*6990c0ebecabaa29b30e87a9b1b70d23dd9ba3775fae53a1355e1f4fcc6b88ed299ae6a8dfe907
*53bc6286579f2e6f3ae0b436e0844576679bd1d6da3fa11f6719b5d7f0522689589f12b8b2469c
*3c433df2ea0905766a0418f46cb11b549562bbd3e459c01069364242ab2f7baa54b4e3299b8248
*0d0de714754113cd244bd59400a90420d948b6b56fa00bf2d4099e7ba80bddc0efefbd017a05f0
*adcde5c58aaf9f2c8c96faab56d639ea8c952681f03dae97423805a6554f8ae18787875ba8928c
*9b5ecdb73beb1de23d81eadb12ef4745f6f1c1debade9a3dbbfb165c12ca4c95053e6942fc2a13
*bc177630e9b79eadb618d227e15f7802b32e93ea35ddbf67a2d161648dedb54366a928759504be
*87a79f67823e4cb883239d4b9f3ad0311de2689340ed49c2a47ed90225578d0b68814e8691ee98
*4a28aaaddec1bd1ba1143e7cacd32018677e0bc35c8abf4caf01bc580f031c503e96430d390aab
*cb6a6b026d1fc9ed73b77dc29f123e70a9ade102ade615025cdcdddddc7515490efd59d6c45e56
*598740e41e14fdce3b83843e079a3a85b97bfaead5986e7a6f5e2e9a975fff440573d7e33a4153
*1009ad9b8246772cb20d841dcffafe1b9b7d26de3040c6f8ff56def35edd00b7df5ebbe614d01b
*69e89fe88f6fce2b45d0a04eab99c9ff00504b030414000200080045545939a3f3b68866050000
*900f00001d0015007365747570746f6f6c732f636f6d6d616e642f696e7374616c6c2e70795554
*090003824a0349df028b4955780400e903e9039d57df6fa346107ef75f31711ec0a94d4f7d8c64
*55774a54a5aafa7289aaea74420b2cf636b04b779773e85fdf998585053b97e850e418d8f9e69b
*df6351374a5b30dcb68d55aa325b301d7e1c2a95ad4aad6a2884b1ad1595497255d74c168990c6
*b2aa02d1cbfa5b66201dbe2f25b9d64a1b2f70e79f7fd4877b7ab35ae51533c623c51e6673bb02
*bcd6ebf593e1c099e9fc1bb06ad46b8f1c1a963fb303dfc2e9e782375c165ce6821b945c3988d6
*709daac60a250dec479ec9ecf94ff0c51da62b8e5455ecd0da5d2bd168c46659c5a32dfca924aa
*593fea0ea4b2c4033190833057ebcd369037421e2abefbc6b541f41d7fb15c4bd4d9ed7abcc283
*8d32ce56442b20eb280a96d7de30c85a511508450a73cd99e5109515b311f0c3c178cd5fdd6786
*71e44c5eb277f92a34f9358bdf6349a05df2533a640aa90e5d3ab0489132322a158257acce0a86
*f95795b7f0a85b3ef3a11730b9168d3578fe55815e792a73d45988dcc6218f8d7b69daec32b3bc
*2ea054dafd1772f2d64c4094f4fecb87af2eee744ce6bd66f462a8accfb88297784858c12af11f
*f70e8f89f790d68eaf57f5dad1f124dd2518a11455a46184d0124aa3f9c13e64e910b2740a593a
*84eca294546444234650806ba8d93387bb87cf8f4f8f0f7f7c4eefee3f3dfd0627a59f418bc3d1
*5e4de69642becfd8cb07c773e86947472b656f67d5f16edb283146495e79c43745e7ea508c623d
*9201f47df084e74a2f24e8d24c6047386b72f1d94157ef7fab16ead62066c3735176b0dbf5c080
*0989df49ede9c865df0190ffd019d697e17cc330e7ef3753a48e6808fa01edd72c6d983d2e4315
*868088fc88f7ae81bf3495c885850c499d982e76945ecc8a4c54c27650ab027b2922a8134c5ca8
*c5517ecdc0340e281d94e62b16ac5693f68783549a87c0ce8f0302799249ea9e10a38119a707ba
*95d47b19c6f8c8758035d4369c843daad6fac0b810bdd91ee745464cd252bc52b83ddb4268ea50
*51b49a6286dc9651ba867bef61cdff6d396611b531eae3c676a861b0f55780df29c50a1c9af62c
*c6179bca0fc67c19a6917418988f16f3b771b3b3e096e72ec1c9e170e2f88731cb5116ebd86d11
*6e358937c4e87ba149001eca2500cdd15e7c0baad5fd635423706dc8686af3002842b2be894750
*2323e5c64134ed31f40d871065c28db0e666011880d15212021a8f789127931da8de03ac735403
*2851d7bc1034f1076d373535de1bb260c6798b3d022713ba53c9c862917fc3bd8173193a6bf4cb
*9c1cb27ac41506f0cf54845e75f05cb5c5a1eb410de735ed1e0114956832dd4fc3b427b9a73e95
*a4076e4bcd6a1effb2599c48b1fa5b5705fd7d52a6b4743274330ac5519a4a944bd3681b4567b2
*f42a94ccb193e07eea9eafc20c9febbada9f4593f22a00bddacf1db36c697ff58123ff86494ae1
*f63d025bcb503f43e619ec677c8163b08d54856b389862dfe98f5425a66ddce29c11e3f46601e5
*b926b3e7174a709a87865f98ab851a16b37e09c7927597ef3f8bd7432b9a40c3ed7c3f20225d2d
*307fb0755050bd5b53b7eec7512813052d82f6b0fd0c31be403700c792d407b35fbfacb7408d79
*3f0e2fbc77d3741f8cec69c3dc842a132e4dab79eab793029b0ebad7df622995344ffa20d0dca8
*5b898376fc1d821033385661311bb4b9e9529724987c4934ae54a40b2a8559b4c376efd678401f
*79381c1b41b135227f86b6e973ca9d4f88018d11034a56dd2dee25eed98e16eb198f6123405716
*fc2531399331155a421f71744342d126f07eefa9a908e2683439284472382dd1df0fb4cafe9989
*93b2140768d3daafabf924f23f40e9378a4538d6f8e03bef2d0bf1933fe5f8ee86a38c18800af1
*6672c49a7ebf726de30fdbb7b5ce9332198ca67fb3e75463e1aafe06aa9ffc67d7f5ea7f504b03
*04140002000800603f453ab2c623f10f4300009ef60000220015007365747570746f6f6c732f63
*6f6d6d616e642f656173795f696e7374616c6c2e70795554090003b4fe8a49df028b4955780400
*e903e903bd7dfd77db3696e8effc2b5865fd4826949c64b63be729a3cec924eed4bb6d9297a4d3
*e93a3e2a254136c712a92129cbeabef9dfdffd0040000469bbb3fb72665c5b022e2e808b8b8bfb
*f9e4abddb1b92e8b60341a7d09ceb2fa189e1775936d36c1d8f81704afc3a62c37e1baacc25599
*175761b66fca6dd6e44bf8fb506cca6c752aee9a2a5b36a78b7dbe5985e53a5ce575b36ff24d3d
*5e64b558851f78ac5db6bcc9ae443d09c36f119e68b27c035fafcae57e2b8a06a096451ad64284
*cdb508b3e5b2dceeb2e288c3228a12c34973d7046be8998600e536aff386daff62b409afcbad08
*7730da2ff3f92408e6f3f0ba6976d3d3d39dc86e268dd80800bedd1779739cc06fa76fc5ed1b40
*4154a706145c9d20dfeecaaa09eb630de3d5935dd65ca7e1aff98e3f0774af71aa69d888ed8eb1
*822ff9970afe0f80a0519515ab721bacab721b5e6dca4528a1e2effc692d9afd0ed7ba56dfbd01
*04a19bfbf5a4860f17e59d6a56ed8b397dcb0df5daabef37e5550a9f5673fcd4693381592dcb62
*9d5f6984443367d2986ff285db5c54555969c86fd5e7afabab33fc266d3f7abfc3cd949f7e0942
*f8a7bfa34f3bd3caaae5757e2b084d35c2be409a99cbaf3a5d2441cdf36225f47a7ce00fcff1b3
*1448a0aac57c8153981ff222878d7d18981f3f7e3ffff4e6bbb31fce3aed97bc31aa25031757b0
*ccf003a0ac4beeb2bbb99a57a22ef7d552e8457b1ac09acfc59d58ee9b6cb111e14c51d5a428ab
*2dfe12438b49db2241f2056a041a9e8517b494519d6d05d25894869100829de74cb1f8f787e61a
*97baca177bdc839adaf011554b305faeafa294416db3bcc026b8f330e87c5701e43b01dd82cb20
*588975a8068b772fd2ddcb644afdf275789dd559d354b13a152d564988eb135343fca76628ee00
*b11ae07003f7e39709f59023e0bf0a56bd2a74430793c068d21d4c2fa7f9c11218128e9f84b3d9
*637abc4c246e41b0dc64751d9aab1ecba32a1107aef1435600458559cb2489399eca0ee1ae2a81
*266ae42fd86325ea6595d391813d1e7d0b94780afba19b33030d1503e54e920ce770806be09f35
*1c932be2a335c0f85ced4540cdf6b5a8e625c1ae3501e1bf38e2ad9ec1eebf2b0be05523391e31
*e290bf1d2569db6304ac6d5cde8ca0e9afa3b6bd422ccc6a98b2647f76c7ed7ed3e4e35b51d500
*1abb6ee94776039d76bb1a68e916b87e09bbf9f77d5e8918082454ad2d40fbdd5595ad04f6fe11
*7fc0cdb414a1fc348c6b81cc028edb87e38773bab66036a26e14b03ab1c1c9198c8141ce10dcca
*372dc0ebedf947bb236f98ee579bfdf8bbdadb4fdc2d37fb9518cb36d8ed0e7fbc2d8ba8091d08
*76d76c73c88ef57859ee8ed823c31f6fe08f107b1442ace02e552482632b6080a33b696074e37d
*b521d473fc811735f23cbcbe25b549461a1227b501ac01c278931737354158133aab558e74936d
*104e5c2788026f07ed83265e0bd20a6ee2468cf112dae4cb06ae7a5a0cfc519470771557a29273
*7b058709d708081aeefbdc01945fc1616d01d5e3ac196f8fe32aaf915c89be756b3aa48f034fc7
*17775b2c9bb23ad2b4172307648f4494174806afc21b217624a9c0a500c7c11e21c223bacd7f15
*781ca3f791011a36be2ef1b8efe0588587bcb90e65633aa8d370fcfe052df197115fddf0c11744
*d000317effd26d426d900d8fdf3fc7bd826b8c2ea40be0f919e087709f5fda48c2f4cb6aa53986
*31001ef902d833cef6709dc3a6d369c6e6e106d83b1296244820536cedcc5f52f7be00fe814bf0
*9f111e47eb5498ec250d6103411005910dc6cb1a1b18c8840277ab0654a34f513a5228a81dcce1
*881cae4525c2c90ed693f0090f657563c31140d3b828748722424abeac776299af73f3c4c1c455
*735ceaad0da928c72bb1a3cbf85d7766f0958063562cf3eeb26ccac3f8ba840b9228e33becbca3
*791774c860ee217e8d8b5f87db3dcc139665796d83d994cb6c33ae8b6c575f97703aca1b0486f2
*c2884608895451d20619a60e497ea13e2170d3e54db96fc9f5927e2e40141259e1bd5922be2670
*048befb32462f13ffc48326ffcd56071c60988ba5c021b0f1c791a49ef5d0bc8d805df8a18f32b
*c4159c2e9047618230b9ffb2e973aae7f80fbe8b2b01d78c942067960c1ac81b1ec91f1864b681
*33ae560daeabcdda1077f0cf09009e97370085fe2234e71a4dfe060f9fdd4912d21ce85bf5e415
*363f916b3f57f7931f10e03c87bbc1fb2d32fe39317eefd7444473cd25bd6d404af177560c5061
*2b9987afa9baee654bde9a39528dfa88e86e2ee9ce0b439f55d9a328e7481a2d4c3815733a77de
*ee555936aa2d4b4a06a04a90ac2ffbe98e4fc2f7f2b414d059b210c2e136cf943c07dcd21dcb7e
*a0f8b0011e36471ee65991399d655f273e5573e354f929828e996e06726633df1ee778ccbced91
*f7220dd443842a56f0d028ff067482cdfeeb1f5d103b2d5e0b24826fe11214c64abea619c20d93
*ad2c593c94470b1e63b7a2c067ca01444ce0f3f57e4192bb5891de00054e035c064d0bc585255f
*2e40b0e483bd9a84e16790094201a27685d215725d794fc2bd916f36262c466d892a085a7cbcf3
*11de2a037ae6f7f6be62219b5e3375128523731223035a0d6b447a11351f144ec21caf42909e6e
*c5a6dc8d70424afa1c2942a269d6808401ac0454aa506c176285cc7e622ffb7c55c1beeefde705
*ced2a2ac3585ad8c27a6face212fb305aa28e6eac5a2b89f253d619fd4d313dfa5dc01886ad9c4
*f67b37d1309296d14ac25e00efbc010e103368f5a7c16f5122320517d5646a61066beebc54559f
*0497587d97d7c818dbef6c20f86f535e4d503d108fde228678e04ef005a0bb747ac0d0c42a6855
*7873ba601d1cf31a0e9f8122f21404f2703cf5eb7bdb5442c4fde8e13f01e7b21f040cba2fecf1
*da7d82dbe4feeb702eee7630853832ae3810eadadb0dfe70ee1dfc5a312183429e84e76b383545
*598ce5d10dad076f7b6f1d40d2d4125eaa0e3a9e63f360120646afa664c92bcc9bf660c1c6b8b7
*319c5d3c5ed30ef97bae6c63d2e63df2bdd0b8536b3824a8a10a1747fdf1265fb49c802572a070
*d4951870a01ff012fc3f9065cbac142fd5fd91861a78ac63439826aa66f74563001a8fe525480f
*8a31a95ff1578442cc9239cfb2daaf1ca6838c610f5c178841b4ac2132a611d9cf2c9712ccbf4c
*7660ac567e230e798dda58a1d976682c364d5c0392e291b9f6d1a370d6b2ed10dea149c27ebc15
*a6e3b19485fa36e831d8c1c8ea1d8748c8df92765ca5050312dc66bb18ffe453caaa6f544ee26f
*8923d6e1bc8d9b1fd9b6fe3b4ebae741b7cd591cf21c0903dc45e0e12c9225237b402d575c4ff0
*ded8c549429c9d9e64f660937ab7c9e10e49239b995d5a7f91b5833aab7ed33ece6c33dd550f33
*45c67fc8e0c1363aa9c318008fc7fa859a84ab52f012d0ed02f7c1aacb69c5860634b70246a35e
*004e6d997ff42a03daf7aae6e35ebebd7a36ea222a770a58a522829117800ffdbe4ba24b3c936c
*876258dc99ad4544fa5a5472fc94ffa4e7aa061627fdaf1be70314a1948de8b8cb27ac279994d5
*d5699d6f771b31724ed975b68217823c29dd695c4c2f2d39031bcee1cbada64a831da4eede3ad7
*41d291485a7092065ca4bacbedb6400444d5c4cfd3165a12744eaaf912ea3dabeaa174a1cfa073
*040d28c6216c97a84b211a64f434baec60e5186d7aaf54f7edc444623cd763ff3a69c248a512d3
*da6963159fa9b39032c633fa69b37e870af94daf303a2b6ef3aa2c50731ff702f7ec8bf116efdd
*16689bd7ea31133bdd4024ce6a81db555c253de4623df89d4fe43e26037bd88571d1ddcaae8ae3
*be7d84939115687263b043cb3600245bade62d6eeeea248f17530c2d2e10b7feb5cbb8dc3d514d
*5390ae9c9d68aa63cfd618fa925c918efaacf725113f0fff3073fac3072f93a9bc26fe926df682
*2db41603bf5b0a1076db6fbb480d5c33a3f1588f461aca850881ebbca027eacb9187b83dba0914
*27ef5348d8583de6e21bbdc994f67f01b22a5c7c5da523a1d0bdf2607603aac83063f704b45d86
*b00662d4c31ad4d4b5624a3ddc7caab5c1892a7bbc67963fe0eaf3d3e6086f213650b44f9878bc
*48502f5ec042e084c76385cd00d61a4754edfd56c4de952130dbba7d0cd7441cd21ec866cd56e9
*1ea393083c33c4669798e4c384bd6f76fb46321bfdd884a7b3fbbe542b2ed5177ff8a657b361cf
*0ac539e407fc65de1c63134cbb369db34b57224ca2bd153b2bd6ea274d0333764adb8596bacac4
*e5f586deb40bb55d1673957c8c422b38a7ce77f0e8c5cb1d28f3a88da3fceef30b9e00620ebb09
*43c2cf5883f52b127071e85909ef44589fbb2a2bae448c1d25aac980aa4236b990002ed1adc2f9
*e842a133bdec80f1bbce2029b2db8c7f87c84543f88568dd7772a85024649b556cec50aa304c52
*2f841176c443d8633e437d43745247a3f0a45fb2e6a18261099d5ae2fb04a90a7aa0c6535f716d
*5352d76c8e0f3a0bbe4364687e76b5d8afca39fa4ce159770fe66834fac86e1d996c3a564d4966
*214d86f10cd60cacd52d90ba7659ae040a47703f020321e3f4e61816597e2b5e21a16721cadccb
*bcdcd7e829d41c43902b42da3058ddf61cc3500d1c55616a7b8ee51e1ecf61b6411534aa5d6062
*62078fb912fe3731a7d2cf0f76f98afd7f0034fc6e8a5274dffa5ab32bd904ff83d7fef314659d
*6d7687a2439fdfccdfca5c1e3febcd3142cf8831329ab1f28338a9819c702463b3fa28a3879b7a
*ae6e647b8fbab9f583d9775134f0d6fb0c5b327e9bf65ed39e5b3a1cbea65b7f00f2452116b7af
*7640b73e58248c5c97fb0d5fd120cf80e4b09ab8b7a45e43e759daa5f7bf880aaf64d295752c7a
*40c268e2192fb31d4906b47b78f392e7824962d88bd587be07a501b3a515c37664d18b04954626
*81201a5162aa22b7378461c3f8a05753561dfb49be4462bd11a4159223b8541fbeffe411319f84
*efafc38380d33e1ec34b6b27d67b3ccc640d21bfc4909ee9c7702bb2425a6810ab5a1f51d4408a
*8903f49ce51792d0f68b1ac40db4ff4816808e4368dc0973b40af1fee08d57c2266c6d48bbacae
*4d1bd06a85a3a30b0c42c2e906f7ab3cf482983a6b54d08699b61ba142fac3cf9fbf7bffeec3eb
*cfdfa57857210b6b485c1277fc871ef58f2d65d47a3c7a31309d18cff3169da0fb5ed15fba9bf2
*aefc23325ba1d4e7b825b46cd78234be800be9b7b49b85f27d83836a8b2f167e862e07e9b3ed33
*f8dc046a448f32b4d1a1d9cf64e60603b7df5780ac6939756fa6e459c437f8185b469dbe733609
*198747da8814e0e4fee71c1af55a5053c368e20742e70808467f9d468728992c37c0ace224e8b7
*c1f8c1c95317cb63979ebfa7fff6a90460559b390b350d2c142d6b9c0cd18cfd92b14cf3eefef1
*2b4cddeb68aaa1e6b881f887226bff65d1cac6a4375763ccb735908d8d612f456bfd92e28a5ed5
*92cff0eefaddc6eabbd473c4ee559a18806d270285a0ede1e01af9944bad8492f88c4d5d233b7a
*8d4ad303b927e1fd42ac64b23bb2cc85425566587afbf0b57715b16388ac790376a6f9c1901f8b
*e452c635eaa33de73285dd4627dad168991923d25b725bc2cdcec2735e74a5c72040b1625da2aa
*925ca1e85a2997cb7d056c178d68303f38c1f81d5ac180c77bc0a295d06f579cf2444e6a1ea8c7
*f80882a5f9d245d790f1d8f0534db5b10d597e803752fb72d1c62dd1a02894a029b31d16168596
*e824943ee64b72578f938b1797695729dd3dd40e7975840a9bcc70279ed15604248eb773d4260f
*5ada026f0d023909c30f1b8112bedc36bcfad0f6087db2ab2c2f68cacbeb123d113200b85e8b4a
*3b6c74d732663506aed19836cb5ac98025d96412982254f7401af3f820aaeb6c57e32655ca0cda
*ce862447be71e03bb8b0e8e2b1a60eb7e5f97a8046d8b30376076ea071792884a19e498936b6d9
*910f2609175748c7415673c8cc6a9b17c883b20609b70a47f8e61d2944273436c258952dbe4627
*0cb27010df66cbeb1c9dc3d5d087bc26dfce7b362130b0466a151548aec71059038b6635bd6b05
*d9d968355ba12614ad4a3cb8cd2af2919a0401460d21bd565b5e34fc1f0919dae7a78324fac64b
*cbbd156614660d1d8be1a82033eae8bad96e824052278919b4e23b104d7680216cf9f21a351635
*29326846bc8b3601dbb4e6e8c7583906e406272f701f0f8e1cd47d429c6d7779952fe98d7bcbcf
*092585194eaeec0bb54305072f3eeeda849cc4bdef888e1b42d79be50de287e7ac15f2e408089f
*5c5c3aa2beebb1d695bb4608adc5a8bc51ed555790ccca9bc86cd0278bc9be039a39f49fb9f108
*609d9ea408c11150fed2373cca5fc1e3e4a92159aa9f1579e5c7354ba8f148eaadcafa15a17752
*b160c8df46efff234abe14f8be57d34a93c4034cca91afc2f5cc72036be767042fd9b14a81df2f
*097774368b8a26f26bf08032b0498aba1d52f2b43bc83626331aca0720db34eef355c18cd8907b
*402ca3a4cf794a8d3c81ab5f547102d84a033076f3452bc19003fac827644930862681e1b6cc57
*4439a4a520ee54924b7fb12a0fbdb0acf58661837bd497b066d9a1504a4cfaa32bbce2a7f1450b
*3a8dc66711fc58c20f7ccb4697e9f3240806fccc9cb3d5eff9404ca27776a3cf679f3e871f5e7f
*fa74f6760acc0259aac82aba81141769d9d728ed05a484c5877924185a328a95b275b71e45a79c
*fd7ada9e90c7acce7d3cc5dfbd95df8dfefa43af1166e079d5baa1d09a7ffbfafc7bb9e624c1bc
*7bffd9bbe25de62d178e7d720dff76be24d02e2b5da0a4eb2592a67d57fdc442127987091d3085
*37e72fd8f8973484c9a21ca2bec26b4bfaafdb0a2fd315c4f16fa767074a955bd164abacc9e6ec
*a6132907adc4639e619f0be5116a774789650840e719c3ede21ea65763f8703b5edadb8c9c6015
*167af4d3e899d13b1950f25b381d2a3c6195de22da9c7617d12ace8609b9796447b7d4bcb6d393
*f3bd5a48e4a814782c6d7af436829e876c73e3ebe3f3c7a57e037e43d280a2d46716ffa7f1b5d3
*e9bdef6d0794e173818b022436579650b92cf844f368bfb53bd26fb4839e17b7d9066e0915cc19
*9e5453126b97da3ead2da428e1fff8f1fbda6793a630b1d67c1bc6522ac1e7243d87c66d105fa8
*de415d38f85244db6332acd8b6d7a6bb345d6fada0cb888360808f762c198e419c376472238eae
*99f0e16b7f52695db19424497c7d25d71e1e4d990e87626db2cff6162b4452afe5beb39296a86f
*5b7d35a1a10ff2ae9e11c335a6d76c772ca4abe40393edcd0a7f8f6568af1555301eb563ab5045
*d7d57fc0b34ef3349456774753e5e713a75d3f179cc5c7d69a9f786fd736ea3e7688c8d1da3711
*3e93c93d4b4f85f5ed724d90f7cbd7523fffb08f350ee867c1ed6279dc88d4b7d248cfe30f0a1c
*d672a2d75dccf1d70a9202c2bb9e9280e291c5c827d4d5c80cadda19b641d1931e52e8e4da9e9e
*bfa163885c3052da4b6dfe3fbd78f7ccd95c347bbe8ff02145978a99ccf560788c6044bcc4ccf3
*f47218576702782ffa777c2d9ae5f5dc34717b9c08ad7999516ba97dba0cb70e236acbc76e8d73
*42b8f56aa6a506f48d364f22ab07d14e5e0526e274e59e54f828448c7bbd410cd4fc7b00633e9b
*8dc2783c366238c3fa26dfd5a61e44462cd1cd8691a6c9e83e3f324327d2217e928dd02e2d3076
*169e986fcffe72f6fdfb0ff3b7e79f3e77f17c124e60cc31c53aac88bf1b6a6e499b703c9cc380
*34d9a3fce716362548764dc21d93f3e84754d88cba142d8f06b60deea7f4de83d48e48ae941c2d
*669e28837ebc4f9b2e1b914ccc830487042926d791fd1921f3deeae169aa039bb0f5cd661a3e4d
*fd289971eb52a539c0871819670ac5efcb4a79c166055296a5c96a07924605e303e59be03b7c0f
*e8ab164eaa1b62355f4c3022717b0c389c8002310141b446392e8e906e0de5c503007583ebba41
*a186db7068469198e1156a5eae37be9aa6954845858fb87e07eec89da83dc56a90912b53963d27
*d750485e9530811d088470d20e22bc29ca03dc5c241870e8fa8492f2c057749ef9ac73abb5038d
*bb69571e69119b74a34288ef161d37ee0b92f964442b3dc72ebdf28d75486733b58a7e96ba0074
*6e1ec0183ad420cd78725a323e00857e5e96bc0d4bb7f5b81fb4769995b68a069472ccd875db98
*3ab0532ba991b5d81672fed8cf1f92de352748d37f82130fbd01159a17866ca0dd84988851ad61
*c16f57e332782c46f5c5f3cbcefdd0390abd7efd0f58172d2514046b3a249cd10d643f44fcf813
*6337242c737967487669f81469c90de2dcef561870b143ce41ea8661b77c5f23e3b4f535f129a0
*fa9b1921e817742ee1c9867ea3d675ac0f87d9934eaf0cf28f3dabc14b60a9e76880ebac36b438
*3ae7c751865334774d94dc1bfae0442d04f7ea8bb0a1a8fbc61b76eba68c0896f746af2028dff0
*967c66ac8d7bd9846ac9c3af66663bfca84f6bf909a4c91d7227335d0a4bb0c8aeecad36c81b38
*e15ffffa571d38affcbd2c39f8801e4315b2c8924c596b2300c237179a873a8592c51a4ddceb8a
*f3101cca3dcc7cbfe3243ea6e954ea6bf170d5e506adc868243d88087ebd2a9b0eaf82a124a94e
*80a88c816377055aacad7556b8c347031d8c07bb9fd2a0b975eda5fa53643ab5c52c269416a9ee
*a138ef35e4df6803e680498f102991a9ff5456b8a79f44135f5c2613b9c4dd095d1880953f84c1
*76d2ae637ecf5ca4aecd74077a5736dfe2eea7e1b06ab0373cc57ecc494c573611b3f7aea0b082
*61d4fec2f4f6465e71bf15ab73ed3ce4e011eacb9369dd24ab93daa7671cc4daf30cf509ee245c
*ba47ef5bca10a74c0d95d888db0c9d36247934257aef42ef9c05e76cd9e4b7e8e73c78e142cf7e
*010fb99a1995d9bd700674da9606d07bc07d67e65b74e1b8162bc3bbf22187475ff7eccb3ca7ec
*467ea38dda02999ea85734913c575f18dcfe9ebb105a8f31a1529dad857b07faac74ea7aea427a
*0c14bf196b9b1d17628e3e5df64316b37c2ad57bcaf940e728191b03adea8e19fa1e5df580ca7b
*55bb4ad25eaff87ecdb51be075c2d96a94d3fa0df082ae497558816dce3de837b26a7545a76dc7
*82642d6d470252fde57da71b0e48f3c608fa5d6e8d319bb570a7030eb3762f953203f5a3680228
*d71c1ab2dd757c5281fd353215274053764383685c7c31ce497502f45e4cbdd7adc6a54b660a72
*aaa0c00b63d0c47cffda5be20bceb42cd8e39e5dea2ac1ce6a0665902764ce6f77a0c61e2e77ff
*8e529aa596e4e82cbc92a99627f268ea09e3b1ebd8a65775d3d54eb9a6cf3e46d76751ee3ec228
*9b199c354a77c1c658fc287660da9156e4ef234dc34fb17962bebc1cdb718ba36d2c567f342055
*e103ec96f42de4b1639bdaff2c0a51b1d3ed465c65cba3ca5c235783a471e50b9b37a6715d2ad6
*e1babbef26427f6a863ac3df650a6935051353cb64edba643308a928f6a4313020a91c23fcc935
*501b660069bf4fc267a1476279129ebdfef4f3f8fcdda7cfafbfff7efcf6ec2fe34f6f3e9e7ff8
*3c0d4fd80850a527b18964f5a5f0d857e76a256acacbacfa7adbf6678396305ee9bcb70a4ee205
*b4121bd5b207290a3b6484d40af62085ae3f947d4c75ea0c99805446e26f6db9a4995bf53fbc3b
*ffe33b23b7c1da1b6f43abc58472ae336d6bd44207b7872d679721f49ff1681199517956271654
*ccaeea1a40a6bc12b311269651f9cd6671e275c7294c5f3352b0931b70eba0a339b2c5258ca83f
*9d738dae8d25a608c5f76e0942c864773c85ff1fc2c3291ad219a4b542175dc9a94d8192de714a
*913b3351dba54f163ed7961c1477244f818990f86b2faf9365a57d4c72b0904f9633300abdee37
*fc2869bd681856d797be3fa95be7fa5320bc4ea8fc653a3a8c9ee14e3bada4f3a7162d02afafa7
*2dbb5c031c05f6f9efbffedaf646b695b8fd1272c786c4e63772090aa5a30ffb7529d115054dbc
*214a56d8cb9b1ce86feb3e1ff430ca5fb3632bf14aff17ae9a30f6e37c1974cc8cc323de89878d
*78277a4734735b164716b250b24dc9771cc8572695a6db9144f2c02b51b9362753e0237eefc8b4
*4abb674fd298dceee8cecd2ecbe09f91b279735378955e01fbac9d7be4373e0354b76c51b331ca
*ea681d34434e9cc01e540dcf4aae3aa73428e1f548cb7d10da1ce13cff75ee1137c32d7de1a8ea
*5be3d6c01cd857d3786adef3c834e903eb03305bc6ef3136cb09a4c25e5a1ceb7b278491ea1e3d
*20d0a705e99b15657cdb948bb87fb0a7913562e2f3176258d387b904f89326909e0c0d7da426cb
*18a4ba0472a522bb878286dd87e56b8d914dbe79f14fe1fb03baebee36c242b4fe6fc2d4a104c6
*18de852631bd2b0f981b25c408e28c348b8aebca3cf50f7471b42d256c1cb1dd6b520b9fc4ab2e
*b818ca08667a40f041c46cb2adb75c0bdc7374c8bbce35e1f1f5851fdfe7e5ea69436e2f52f144
*49bf9beb1f941e4a354fad03a13f8dcefefc679072bf7d1f0d7aa61ad0cfaeae34705d7d68a27f
*1306869db7b0a9879ee0634413508b911a6aa67e49bc37beb3629e5b7e25d0c72c93b54c863350
*740ccc9e39f8e1e9e3d07e9bfc1302960526f07980754847a31a78dcca5ad3b16d945298a93a36
*ed3a9a18f42ab3e43d6934edcbeedb0f4ec6db706e1a8e5d9d934f8fd105d0e1659b996be871c0
*72559683a35a4973b48e2db5064ed2d147c409afe3d133efeeb204b2cc60a5e740ffee8a0caf5d
*cf31966dd5b71e51c1af195ba7985addd04ba5c0d109fbd123fc172d2868c7c0fd90c55d3aa068
*dd65c23b43673fa470dadef49f1507074366e3da42547404703963e9d38fcea3d6eda16be65faf
*ce5abd34172ae8a537605a3da7ad1b76116f9f8df0e9c86fc6c4e7e3ddcfb9d28ee6d9182b7173
*9519ef44eff698575ed701a5c3b52c6e7d270ce5e1f0c3ec9310a482437f218a3f4849cf8df780
*6eb55ca357a9a792589f4c0200b18fd74df581f6c5136db0cf182f23d4fd278a9aab43dc629494
*fcaa645b287a12be51090856fbedf6689b2dcb051ae780b960093a780cb0f18425a16c23ed7eee
*ed605eae71b7ce90691c9fc172a06b461ca94b364a23fc227288507a0378dbab5a2a491aee3659
*83d1d0b311ecc6ef5e8e7c5e7530e3b2803eecf2a023110bf988132bcb595251b1f22d50ae6aee
*4dae7d39b11176d2b9526c4745fc0acd2348381234b4814f22ab0979e43a43c8aef0686865a536
*7af8863af9fa202cac82f71f9d4e9d5b5f42499ccc316a3cbc26a539cddaf4093e676ff395a87c
*521fe1ac1049780bfefad7bf062e57c2805f8f064282b07690b5730aad5335b57bde6c6a76d39e
*d865feda0e5d365546919ad6583a0b4cc31793e75f8aa8eba27793dee28b05c9151d806b8360fd
*17edcd1fbe8958c1a422157b228335322735062ac2e818927483ef8b4db684cfe718b41a259326
*6f409e8243719bdca7e3b2b2ecfbe9a70df07b8096933f04f26aaae398fc51cd0a701cf4bbdaef
*dc84478eb6b3552ba245088d77f71b982ebd69e3ff446c8b746da4c3e5acf1b65a4817ada46c5c
*735954cbe6c0ed75a9e95a66f29b99f92efdc2a217336565625664f01d9f6f3b1e8ece3bc378cb
*b547c87bcba98364a748503ab4d02a09aad4dc667530762347972d58cc7d2d4c8d37305514f369
*83da9c07ac246a50df2d8b21c06045cdee822d0b510536a589c4acb9d97793c23c55f9372b8372
*c125aa36f9c249addc94bbf906432dece23a8663675c57cbb4eb6240aebad55229393b27bddcac
*d2421c902215d2de035e9ba22074ea919f61284c55270ecfe0b70bcaf5896d2fbd8d3143a3c24f
*a6103fed89e8f73862681a7e4a707afae182ade8e2ebcedfd4416f6c0de92aa25230f6c72bac4f
*d39f2280d0b818bf409fd3f6385282d5f9b65cedb1cca96a92f442d13b7d61654c00314df60646
*02ffc7415ef40231e84805c0c222f7d57bf1cc5f567c85cdfb6a16b1d5eed36934fd9fc5ba3d15
*0ae955dd0c06a1ad9c401bf51c078232a783290efdd57bd80ff5a7d71fdf9dbffbf354c685aa40
*21b62fb9eb2687b614c34f94188dcafd4ce54e39ae4e9166c6df98c71a971535bce36f8cf9060f
*d3c46b9297181a9759b37759c69a5259d15d638cdf514540139f05848ec094e7265337f118cc22
*e1db6e0c953acf0872e03c2bb32b47f8f17908fea9c3f48c48b60be3e84b83792fdfe892210342
*87155c02e7d34eff165d69d2854eb19a741abadd58fb79a40cab346adc22c092acba2a709275d0
*3b4cb616cd71bede6457b177c286dc6dbf4e5a4859916d8ebf0a7d55d33ad1a4930431e15458ca
*25af3986385a60919c0af58f344ba0379126c0a84381ca867ed11366d3dc350f784ba434323e46
*3a5ef0fd2235b4ed61e86c89bd6bac843b20adf2f836ca407f24453b31f476b8892f6986992396
*fdafd07a5a94a199fc76044c785c37c70d3c8a75cddd91a11a31623e42fd3ca108f2b2caaa7c73
*d49560f9218cd73d65071357949dacb633fd702419bcf174d2ec62258f5cca52eb7e4d7282dd03
*ad45bae83cfcdee2a7846b57d4d992c88435e048877d238e2c2f4de676760c4d48bcb5899ce0ae
*22b7de104b9607863b341720448eb08ca62f8044e0b7127efb875c1c730a71126ef3abeb26dc08
*cc9c462100fbc6a267f4d440337cda1c775a6ed7dd1d35340c7e013ff89aeb548b4975da0cae71
*4492701d5fb86af4cb679efc925d57b50724d620539db0ce8fbe97078bd4a9a4dcb44bbd15eab8
*c651339435a9203b37bcd4490bbdd452b6a4e47e59a03af68365bd61d85e8c546f1d2669d02ae7
*0b092f70d203e296749f3f27c2ed2984e1fa81e6c5be1ff1e1f2790f493ae4b655db2c3dd0fd35
*0dbdf186b2a5bab0eeabfb878adfbb86e95366dbc145040910c9309a2ad6b2bfba0e1e3aa6c5b6
*f5217052b820c17967c5255c30ccc2b1c018d51fbd8cd0a849e8f436dd2f3d1524fb939ef70531
*bd6e90d5363287a8d41d980c5c31ede928e9b57eba7a08cfec741ad42fc1f8bfeb5ff0e6fdbb6f
*bf3f7ff3395422b09b32950f13f9f7e8c2d8946552974061469ed546d340375d0804a2e325d822
*4d0eeb0b113e5d086005e2a999fadf2ec01d70e9faa85685e78996c2f0e7721ffef0e3a7cf2a57
*2bd5895ddbf120d21da95805a6168087a4043c0a0dba1a61ebb850bc50e363316e6c065772d0e6
*12e08876ccf88ab9574f42b8f9e16f291678764dd1d38333e5b7b949bf0431e7c697d982c8aa6f
*64b0c47499582f8203723023a637793ee70222cd15532ad328e9c779c9b285ce771bc07a9d1a89
*4460c926899caa4cced0aabf1f9461f54b604f4221c1c17b664a004aa7c9933166c924037b1388
*9c525f72b223cf44e3f1db44cdb6ace4820c5508e0b629f962316c797a3d8b62ae086566874e0c
*9b5a6bf814f0b7c312bf20b01c815471f63243ea3ac045f0f7f21e012441ca0e0b9c1f6bd9dbb9
*46cd35feefe3089623e811d53e2b51555202b6b27618dfae37fbfa3af61bec7f6b75275969caca
*1a019b42594e577b21b3c132cc51d75c66c5f4ea3867c5f9311a73d646bb8d6cb9fc3bb1d9adf7
*1b9b3cb75809e14aa8c8b1dd26232f3e5536070b56d6eef6c0ee7c294e621c2da9c3137cb7008b
*486af88d4227937af4c03ce07625f2de74c6c19fc432634646498acd80d8ac36286ccc79d8c73a
*4ed5608c704c0329c92b9e2e0b95627e0639df1c71c3dc8eb001d2c740335599cd38887ceed89c
*7cb3e19a5468b88b94af7c128598ec16eb3ee49b8c8e1849e46bcc895d63bac00ceb3652b21138
*8268afc19c9298e55706008b9a622875b2c440d9960c576f39d8e824262904edc120d7c0268bba
*311648c2780884d9ec2496cd1538ae627187aae94700faa6079022062c730ecf155159a7d4ba66
*8c74eb525ef4d47cd5d5f4fca986142d11eba22c2dea85da97965bd580332a8962428f0a1f9c5b
*3a32014d04b68bf85818c6627235c1f2c62c21c8d4cb8a96a2ba538d396d1bc3629a05333037a1
*fa2a5bad64226d85c6e2c8b99bb174105f65a6a5124ea36b1ab55ea8ea4befb5a7b645b631375a
*be06e188c3b751041bf9f9fddbf7d3d0f2a5a3ef63cd953a4e02b8174688415bf9ccf5c5337cb6
*7b1c3ba5ef82f10e54de0c5687d6a64172577f3a608921de3d85b4c1a0e5592527d404bb56e11a
*ec7ca192f826203f9da37b02b2809a916eca72c369fc9bda729e4c5bd94186f272445a3032924f
*8d282a0277fbaa94a23811adedd90b0489a97aa72a837eccf34cead6f356c20c0274a1d03eb98c
*9c9d717ccd4246a8d018a9eacdf4cd16b929da1e27527cf2ec23469d2074b5833d0e8f29190dcd
*141c58218a3933d6ea923502e2a8cd182c319968d55e94b66abee437005296d4c8b085b7522e19
*356794003ee6f837973149dbe2372f6d96738bc7e3360a9f8656c9bd701cbeb01f4b08b5ad6f1b
*8da367b78eefb955f9cf19c6edfdf7a88ba1d7b1d0ed681acbfda990471f99c6d0df880d08c6ae
*5e683f63f6647df6627a9986917a3fd84b37900ac1a41c93666c0052b7f189b2b59ddda143f0ed
*4344ae4fa68bb5807e582b03c572f6608e6f27d2a29d260635fb1c7887a8daa067493e179149ae
*1108f9f017d67530ca0553839e1c998e9f0e25cc8c30411cc169b6bb7144096c670fe38103eb4f
*64a16c5412234f09bebe6dea1c6d1bb88cc5714a095fa8811c6d966c7ad12d798e690b504c93f0
*fce979551204d5ea02b3e6f8754bf8b53627fa026f8c7475c63e7b2303086b4bb8f59e3f5bd5f2
*aee47ea4d361977a1910a2a85596f2fa6332ea4fbedcdd2c799b21ece1c47a325b9e1fca3d5544
*410600d1afc16b01e511681dea96ed2932122bd1f1e949da305ccdc84dbf4bfbacb357a8be6d92
*2469e75b552547f6a1e74b2e6aaf84693f4f1070eb54f695234af9f79283fab457f0897c5db855
*e9e8ed8d598092e14a4dd2e7395e7915d906760faaa9aec19b75d5d5081a564ff0df40aa763757
*5c67378823d5032be60f3761874aa3221e0b49ad0886da5c676507cec63df1277ee576bba9af57
*2bb9a5a853e9dbd0dc67d5b71743270493a5f7d06645fe58f726e1b312b53c7eab0da67edf6e6b
*86d55f3c6b5267b722f6a77bc593379b45ad7819f9129c9e918fa32a23d98ac90d8e03cb02db0c
*4f1f90d2408cde17d96d062f67e0805f7940a1ea5e96b8e4ba5fda18231fbf9264fed8bd277a93
*5438f11fc66c6461c9c17c1514d9d006081a793afa4d15dadfb1b5fe44079fc557791ada1b42de
*7195d89041dad96669c6ed0252969a964bdb51904ad2a9969cbbc2f4c4fe20dbe0226225645c6f
*ee6efa0fe2115a89c5fe2a1efda8be6c3dd60dd09eb4187220cae5c190c770b18e95d700a7ec65
*6d385d04f016427f3e77324678402728c81f07e278b1bda20f30d6d8a8d4adbdd4d63d0e6a781a
*d0e7d8e37da45c790ccf336def3ff579f43cd08148a1d9db885da26cacc8f98bee3bfbf3baecc3
*6470085f30ad5ea1c1fc4b92ed70528d9af2bed905051d1f22ef2ea6b0210f74417978141619a5
*2935a99cbd47bd848ff45918a35d10b6b589d7c905fe77f2e9f3fc87f76fcf2e93f0ff86cfbffe
*faeb24fc5fe1f3dffffeebaf3b20389a7dcd6910ccf787893f13b0318ba9edadd03e70f1a7f25b
*3041f40bff4f5400b72e1a86fdb4978ed413d7e1dff7b98013ff0819919fbdb66f8e7f5752325e
*6cf35fc5ec798a0bbf14b3170f89f252629ceaeef11930470c86fdf40c342ca82d4a7e4963c8bf
*b82b793ca64eb996b679a7b4c45de55708c514b99d04a93d75469db26cade26b91adba1527f134
*b6bac920f8990d88caea253553aa5ba6b5e9689d33a0a88a7a70de0210698c4a7a643fbdce97d7
*219b46db5a852801865c634d717ba0f40915f30dfeff97a624a3d9401dc050d501344a46a27345
*06c32b2855107ca7bca230aa1ff5890452d607248eb32c2b9c8ed222cb172080784a6662d41b3e
*b8be641ae6133149cdaa868089bd0398a6908b2a1945906b733814580794e5d237bda73c62a817
*06b5e4e70debd6c95c42aa78d6b21b9d0ff0158981b8997c90246910ada0297cd0b86d24ca9f24
*e634a4ebfbf04c547d298bf01628a673a54e36e0b4a51531cab3667f9d7c0134875e6fbfa170e3
*9325ac4ab91d9b888d9520079b412947c5ca3e6f6d3152cc77b55d9031396b54652aae3579236c
*a3932a02d91ab738d39ef21ac0abd836de92a5412a7de3de6ab8948d5b6e3cc784b57b1aa59194
*439320e8302ab76e4bb770e40f3af489bc0a2983ba55f55718d5b39dc2f31d55835b5678da9391
*57bd4157f92a94d5cb8d6a0c4d69044a12c47b1f13e148e26cf8cd68cf6165459ba385b300b1b9
*7d798c64cf31c05e5edbfd25af21479aa1f2448ca2275da314d275854ca14ab018eb2bd5be4e29
*5d3b258fc683de323c5c1a558b08d3d966abd8ab3493bd2c811829623e5f94651327539f28fa88
*dc15667466bb9ee32b99704e978e7e15eee81c8dfc6094574ede4ca80e094dce73bf5b81a57241
*be9ac93dee494631a2784f9dd15eee933ff7c89052b1133be88364bd37d51e1d16438f4dc27de8
*0dd9790458f2d6058f72e98615f7d4f60e02873fc8446bb2e6d227e95fdb6ef70e649fbbcea7b4
*6a56a1eee85f50757bbac917a76c22fb17185d8945f53570fc5379c4d8572b4a7d89e310560b6c
*91174633e9832e27faf6ecdbd73f7eff59e2dd41d08bdcf7805c1f125e043ec918406b643a3fec
*8f2b5f0d4fd1a3d834b7a19b497e35bfcd2a5df800bd80492c0561979ecd68248b2389271c62a3
*4f97a5b248e5be2a3e213f96329531e1535d4c111f2e4a1e7393931a081a7f5140bd9b0dacfdfa
*22c275892e7555a42ee81aeeebadce6fe49017dd5bb21c6c4a0dec7dec869be1d2a6b754b34282
*9601a6feb052808f3d7863a82fa5c3ecaf942493e4389d6040b3644eff03b0de2fea8637cdc59a
*6c2448188e0133db70dc5f3b2435ebb0249a745f8ee516528b410c1fa4e66e2503c578b1384d44
*87bb27488ba1b7b71cd23bba2cc5b436834bc89b16f222aa7f786cc8155e39a8ab1d7ca244828c
*ccc128fcb1fb30e5890bd4fd4f49e3665229c661f6f7c84332a4484ea1163b695832c22f2fc8eb
*83fe666b181e38e9c0206332e982d1ada69d204e6ddfb2bbf150e4b8ce60bcf192f93af41d6d89
*858aeec7be7154d62fc5f60eed9c555e2f4b7fe951b9507e676af92e1b011f34441e192092f893
*bbc0b211a9f862f9f468e4b0bf8a2f7cc3ddeb74de8a011bc4eb11edf9a21985cf68b5e4657331
*fddde5638038ab30dcd5bf9e1b733d19a7e4f22176107701bd635fe8f7f4fd83eb695cde9fc1cc
*a230dce255561df2c26b5420455d056c039db1d8705f874f5181fc14d364a8f72b567a0428abf0
*f56ee72905fe24d40fae49f8463fe2490fbd13d518d94b0ad09b10afea2a631f1c0f98d377a241
*4c74b32519291642bb73953ed617f13377a26712b5a7d2cf04af4b65c3b018cd77ef7f38ebaf24
*8e9dfa632ddc23fa707a43b88fa0ec482e4ef4983ed27dfe115d7efbd18b6c592c31582690e55c
*aa9996c4fd9ea72f4c7726bc4380f06500bdcc350d1fc4564fdb6547f551e63eb90fd3ce8ea896
*5202302e1f8f67a4fe9a0753211af24379ef59d15b79816586e56ce001fd732e8076b5fba1197b
*40ca068e37939aaee1e0be5a8882e3fd83d65ba352215f3cb0cfc5cf2ded267deeec9cab1a0e8e
*320dbc314ec61b441417b28f1dc3edc455aac49f9527e567172c6b8bac8cfa1d648fb49ef2e354
*29db7c11a79e1838895d2703aa3f20fc49f8934c89bf249ded42960536d57c0f8a07c361255271
*e49ac1a3ae95d487ca398709b44333f91c286aa0a9ca4d3f2acebbe2232a86ad69f813c858dc49
*2db813a9456f712c3fa5bcfd687b6445aa756fa61607233e235a755294c578b5df51e5d4622c45
*f156cbc8e371586ad37951e0b7b8d0d46ada17f78bdf9a6a1399287cd413fd4b403b0789805414
*831e27bdf705f5d54e08a218b83bf05461f3e1b408de2386dd927f3254918f16424acd2348a035
*abbb2f3b98667c2a150bbf58f695541663b64bda3b37450b8ad74c181f89cba292f20df5fd8075
*7fabc9c7ec60fe9d6a4ba71c30b0a8d74e95409ab4a063be031e50510504991f67323f2b561fc5
*f22d061aaf2d0e299b0ef857396657103ca83c0fea6662ee7df1bf2fc3b18474f1f565d2fef16f
*97cea34176fd43f8e2e554c6cdaa85a225443deebd6928d620df8b9b58831bbf78696ad9e41bb7
*a9f698a8e213294ecfdfa7d6aa1b19d3af524c00050b0a42dc76435711f79576eb78f4873ccf47
*e99a35963096b58000401d83f8f9dd8b97bffbd7afffedf7afd350fffea7a4775575f0709b27ae
*b1120db81385d19f31b206129ce06e88a6e2ffd2e9d7a611306637855514fd63c00b14d363e1d4
*d7bb582de644fd12cb559148c9c7ebf2ba8a9f2720fc603e948ea3ae85a92716d9b7e54a330ca8
*60dda41a2d616561e6eb5255683b4dc8cd374aee1f437e0600a420e2da630d46efa807ac6448f8
*47976ffc59a093b1187f83d999486632b32cb1fe25bcca6f810029db1d79912911c97cfc6b74e2
*e8c38f1fcfbe3fffd3293eaf31b11e7cf2fdebcff8c9ee48a9f5e65cc2fa772f650bb3af6cd9fd
*46e7c131f24e28ed9c4a74c2e7fa5783c5fc67befb9652c39ab3efb2269c27a5cd83f3f22be9ba
*e97e75b6474a781457e04d8da872b090c8d3938445e6bbe6f427b3d9efc850c8d9545e5ece666d
*aa3def75ca0d5f5c3a19faa90a775f7a24ad5dd1aef488950a0a4778d3979789b9ac51cf05dbad
*a16bcde60fdfbc54f4fe40a16f488033ba8f8b7a7773f558202af7d1648f8579e2842542499dc0
*6f24adf940d2c3090e03f43065ac5f99adb058d6b3d894ee7147d95b49546993eb7df902839ef6
*bf7571dd7676da5719c33798f8cad19dc598ddef14fe47b9fdd41aa43b4c034d872af1b3915f2d
*238979b4e33b95a3283dcaaa21697834957097569f498d519fc9abf6830a4de41ab6e468ea5bc9
*b076c879cd824898998fc397a6dd032b611815352704803b04065fff4bb6d90b879fdf6f951bbd
*a3dbefc78fdfa7ada8bc66a79bcaaabf48e580c3938a0cce140666d5e35e6eb2ba0e3f34d76666
*d33a36620b5a66fcda487f47211f661fe2ce32444b736090181bb4e53a45f7e673905e9af95caa
*908d1208f22d6d97ace1440fad9ba9faf5556bfea24ef73fd95bbb5a560bb61739627c37fac318
*3b71a0ccb178045292b15c1367721797295d98fc33e9e47d71cfb02c020c6be9269fcf76b1ca22
*9c72329395b5673c61b4fc9991378ca3e306d00e620787d4d9612e2541b569e67ba49391c75aff
*64a00c89bd8cd3de871a1b53cdc620ad373d7945dd77db3ddcc89a9c551af2410f239929d77ae7
*f538aae3c2ea446056d678979d662d230e254168c66cceec49dfa47ad17d42bebdf468260681bc
*8010a300e9253abaa0d7d4a244af0cca6cb06a5dce3cd0b659b1478ecc2917e0454ee1b8421efb
*ac0e0f62b3e95bb4765964d636e7d405f72a44cd539bfad7f4a179bda877681cbffe87b8b19dbb
*12f7a85dd8bce9efa1d81e1219f540c50c56c712580f9a6a1e1d445409c91f8bf2104e93c76d2f
*a907287d919d4e4a5b91795b94a3b4267d4f0a9d0eb6ecfe009d8fba524e53ee97d7e175a66bd9
*c97282adceeb704dfee49eb1adbd57d4edad7caed7d928559bc9caacbe1266ec7eb532aea505d0
*2f65dac9eb1b339adb72fbc0f90ec744c9321c6d4e37cd7cad1081d460d6b60615faf7ba077dca
*6e5b17158b2fda15ad1987b8b78e1dbc525e912e793edff10b9c024855f8beb7b2dd493d54198f
*2016e23053402e5af0d3cb579e8ec83ac287b7decdb431fc58a7d11c830359ea8fd20d6b191f69
*e54d5eb5c3efa6bbcb19a0ef1d9a71d3e3a110fc0c8784f6dee27d940d3f188e4e19bad5240793
*212b03fbdcfa10d9d75ec79548b91151bd96573e05aaaf4ac7108e0651bea5b43fe8b3b6dd35c7
*7b89b377668197b538f21f0670f9021851c65cadc25ff0e35fda34cd869009e7d039d6fdf15d2d
*1b1a88015396a160f816b763815e7519a7ee6f8a82f63ccd1c0d6dc1e9ee127c640739b90a32b9
*caf03a30f3ed8921ec860e1af353d18bbf697e9d790466616d33968a9a3859450a1658e101d249
*41e888f1b1532508e50083e319a28191a442ea3a2e10be21e1a28f030e966d1af87d3683172fd1
*08fe17535e931b84b3b0c42708876f6672ecae29890af2ce4c64a6fec4b586c3c6725f75bc3fdb
*76f6b3d49b1d6e67a849ec6683abdb15a02cccb053727f692e846238fbf4557f4d8d3aa378b3cc
*db3f53a5c79e1187689f9aba70c793afa40de28a0309b4777f0c6b0e124ac207c4184e2bff6d4f
*2e9df4823211e8ca6b2a8d2948f4f4009b4b4d3a7d82d7af01994300790df9b186aada801f67cd
*f29a9ea606a0097d1ad367bc9c0a794cfba27c90a851bbbe6d13fa62725595fb5dfc8204d628b2
*9e58dc726a420da367f22f055e2eb061e6688bbece945f0d555509ba9b6db52d9af9dff7652348
*f1d17ec333bb5ee1637af4e4ab13f3abfa2496e8242878b83571738c2fccd1253e86fe6994d5cb
*3c879b9eb3824598739abe945f24e89f050da75641bb624cdf4aed70e924a54929b8617c47d9b8
*f040c13308f3050029d5bec5ecdcf8fcb9f75136f63dcacccd18dfe9ed50002e5e38f9ee9ff092
*87bb7d81a9c7844c33be2ac94f1e2e6562fe126590c0f18422e11fb2e3c00975b0083a9bb9ceef
*e67f635f8af6f3d85c37b571bf7d7b259b80becc25b2bd8afd8bd7fb6249e92d9039280d1ae633
*85cfd1ac56aa9b8933cdb31f2330eba231f4ce0c8a807098e0fcfca78fe79fcf3a71b00815db69
*c59bce5db4a464350a5f52bbc187a8900c63fce5c525fd2e7f85a7ebb3301ec9ec2da850a37920
*6454b970bcac55abccb8f2d00a6ac46b535888ace6172e65e40bbcf63881263a04708620528ffc
*82707eb1389b2e06a878180ed9baaccf0924becb7f5d2da9d75ca226f544f071e2fb5c49d37385
*1c4392d3731af3577af7d4839a3e368b046ef8237eb07af88c5413f86e7d5b61e681ae9f7776df
*6436f347f61bd85cf65cac3c575dd93ee65b4c09b9b3e80f1c57f28d3affa3f39aa3e6f9736d96
*94a1567c85fc71d45513ebd84d6b80348cf09045969e38fe742c9aec8e74c169f8f9b863a57137
*fab055dbd96b2cbfe6c80039bffada3cce9a4edf6268ea9654721c9dd586011a4c04534b8493fa
*3a8c55685e7b5f278a566d33d64ebd75dceb83efd0ab1c4fe67ac7668c97c6deef2cedbf5a92f7
*9f7839cedfcbb5d0c95aeca4642a651a0f003cf1c95711af8175a7e139d66bf07ff694e04ea7ed
*220d25b4a01c5f61b65c96958a2053b5c950c38f1f5598324bebc0b9ae6aab67c588271ad352b1
*16e8e0f63ce8b4006e3322ef72c00d458078f4a5d11fa873a73b98bb8da32a812e1aa90cf41414
*29fb5bbec9bc305fbe38763dc0eb99e97f424f4c6e3b8adc208555b947c2807b76c9e175a88ea9
*419abc169cc594c31fb3f0cbc891272d640109ccf9552c9ebe4c80e1c2df23e7292c57abfffec3
*45594c7dd525ba03158bae80ed0cd0edbb94ebe90cd43bc0c3b74af7b1d694c2f2e082da38cb7a
*ef864bda8fa4228b9b39befa9ad349b9d896debb5679c5eef8fb0ccffde1ba44a12173785e18c3
*b7e56e076797332f5e8bcde6749135a7a2594e2c671d239b7927e18391d0defeee10255e0ea744
*2b955d3eacb363cd150f19413564cbe487e6ec874ee06a64cbcb26c7e4a4478befeb208316b0ad
*d3ff2ab292819c63e828aaa7d8b896119b92af9fba941959d0b599118ec25c9adb48917fb09c80
*d4aeeba6858d86fd84d1059002f71e51423616a23faabd3de784d362595e1570e1068166f22499
*94fa59c5f93e800258ea0bfaf2e93f09ff9d21e37d9835f902c8bc39b6262c16f49e72a24360b3
*75cd74cb9fb32842091f189ca1d6220db14c554eb1c6326d4a394a43a35ff7aa9a77609b370fea
*29f92236ceb1352c4e7c0dc755aca6ac4c5312d4c305ef69e0f1deb728e86fd96d26d3a1f45ce6
*d273b5ac6eb28af2a2fdbbce996e3d93548654becf33d41e11291b40e0e82e603195a90e2404e0
*f3f033b9f719f5247c436f1acce1ca69a80e1aa15456d7002a5e54e58d287a12e9eb2a4c3f162a
*b83a5b65b015165a78bbf10cd3d1b073fa88f06853d9ab9af175f8eefd67437ef0a9cb2500c314
*a302d461f3eb09efeea4acae4ef3bade8b172f5ebc44cceec5486705054996aa778f1ea084894e
*f77585e193a7a2b80d31e3fb498ff8637cdad1dae82a83bf4559c31ebbb2d0105f20492b2a35fb
*9dca2e94594a4c2042cada45451475766c1435d999909592596d3a5d28d75ad632c998005bf334
*1a9973d048b71107a451a12a4420b7d6706d296d10ba6e5ded73fde7b4e3499e0aea488891071b
*e23f47e310014dfcf18a06e7f51b749e8467af3ffd3c960194e3b3779f3ffe3c6687b2a9ca915b
*a5277210fc8deea6ca6bcb99abf5aae773184e75bfc7eee3fd9ad8b995965a7176742a90b3a7ed
*f376f77ec87c276f62efb774e66dd0b15e80b05d81502d4112fb0d5d5e9b8ea59de8098f9acd22
*7202246d704779d6b2b4f78592fb4f65ab540ab718e8df0a1ec89c33e99db8c9e0f97ced64fd51
*d1ac383318dc4f80567c190a280a146a78c6dc9ec42126611c2df21bd53794808b65277fe5c542
*1ce6fa7c556252ef177114ff314f5a5d61944ac9e2c07f71f3e41155d007268173586e1e360740
*846a39a55cc8e9374de860cdc89ed0508a3a69606ba15fbc9c62c1394a026350d4578aa27ae2ce
*48b5d64279c42272d79e6eecc04fc7e419ad36b47e6609b951034b4d55ca9eddb1df1cb9e06c56
*9e9248129a7f7db9b61a2d5c27f78699c3b0ddf19ed8cb6811e9427258cd282f30e20fc5afdf94
*7b924e6949c53bd466d4a4630509122e272e09432157ece8808e036548a9e83db0fe86b9761837
*0e80dc2f585237cb584d86f621957b656e83140b65f258963765550c12316bbe6d29ed10fe3d6b
*b5a8ed0dfc11aebbaaa6aa22aa4c8995310a404f98963f5372471486719a19085cad85518af72f
*27ff6ae6688fea6bb4a0608e702e1fc1c232b47f39f99d6e8899a650c6c3dae98004c58ed2d276
*1e79d6e4a6561e40394525e93b06aaba0e5a2337b7ec4660dc078674bc81a25ac3fdcd92fed577
*46e04bab8cecbe012ac324a1066fbbaa9786ad716ee511150de694535bef371b5f5e4d06e6940c
*76a30f642a3d448233e9496068c0985be7c9998d17cc73cbbd48aada3fbd3dff181baf2ebdc24c
*c96a44879a351d0f89b6defa6eda24d04ec6a9af37b42d9eed616869d862eadb210b17ecb51da4
*062f21509f3e32a0e38f297ab0ece2aecd94402715ed0b6ccdafa9fc09265b47355acb549f52e9
*6ff81a734d715a2d7a0dd45c864d4978bafd2b94cc6f9ff7157be0c0c33929d1e7738c440954e4
*2ff6830fa0274178a53f544a27fa3879156e3320531524467fe03733f6827dfaf4e69018da0233
*6fad81abafc184d391732bd3f7d89ca969f1ada4cfc98f9f5efff94cd547db63024612ab39a57b
*1d5ec857eba5e9383d2fabf9beda8493097130d859b3cb787c2d36bba07574a6e7543127e0da68
*ec6890e41bb35d79f413e0a537dabb3a1c46fe24a4b41f8613095e3d7391f390b1e91f0737f8bc
*4566e62cc9447fd5cf3efa7ad083cbed6d1adae27b12330e00b6b0e669b273bab9d33fc1a4cb7d
*833598deb062be8ecdefadc43cdb6dd98237bc6548a7545f9728716d647d0dba2b528338b50788
*b5cc9b6cbb5865530ba7c900ac56f18b47a07b5dd1a7b3f678a17538e81dd6f062c1ba01be47a6
*ae9630fe3b88b4185eacf24251d584dbe8f2190ee4cdc8246f1bf3aca3d3810da4b39db449b37b
*3689cfbd533d81b5d0ff0f504b0304140002000800455459390d094bbb92070000091500001b00
*15007365747570746f6f6c732f636f6d6d616e642f73646973742e70795554090003824a0349df
*028b4955780400e903e9038d585b6fdb36147ef7af6055ac94504569866ed8b2b945d1a5403174
*039a6d2fae2b3012657396498da49278c3fefbce21a9abdd2c7a8825f2dc78ce772e4ca5d59e94
*c2d8d68ada6485daef992c33834b44ec1ba52df11fcc90dcbd2daa290ffeed480b256fb9b679c3
*ec7646d791d46ab308afcaa444f3949803bc34bb4daeb951ad2eb8592cb8b4c20a6ec892ac1604
*9e387a56db1fa234fa314a52fcdae017895e85cfbf5ae5166844fd026b94711414283a116cdfb8
*b56751b2582f1625af482bb92958c3e39259965c3aca4a69a2ea3295fc8e08493a63fc263e480b
*a6e14fa67953b382c7812171449adb564b47e0d5689e5742965cc7e01ccbb584232b631bad8ae5
*2f4af2a01949912e2e85966c0fdea944cdf12d19b457a05a355cc6dd5e4af5ef34995b578169ac
*8c87f52a2b6a65f878050eba67b6d8e231836119ea17f036f648f7606441b4e3c9365ab54d7c91
*4c2844d51f6cca3a62ef08d017db29fb41f0ba247f2a2171af77c340183c8b467acff6b48de695
*b84f4d5bc14fb01bac91ca12bf35d8138478d2b15865329495a1d099c0c5f0a0da3b56ef00b1b7
*85d57567e692d2a0378aa27760216175ed22680067107c50732b8c501253c56a55035d8f38deb8
*288c1321c338e4803f7dc81b30c99a981ab0b4b14a41eea1e4002b43c7000169c0b977e06db25a
*210c3a236711f50e476a7fae1cfeb0b6b65f3e1b4a4727a5c4ab462dc188417488f403810ce1e9
*3c2e0c9ec623626a61a76fd03395760cb347899d3ac095acf916af279240eb4382c65e3ff2e203
*7ca7a2c0ef3115596df2d989e7f5a0079a3c106a6ee565cf49a1f86a5e58a5a1740d38031c425c
*de01015f7ca998dc84628227aa85e4782257117c49c125a8b48007247a4a0a26a925ade141a3a3
*7d328282b658c8912d334d2d6c3c4100a88d1d4db25c7e3d75d10e8e96c2fec6970d249aec4f2b
*1de447ec8993a39a8492964bfa33054f958e0fbea6fe3a8e4ee7addf74cb1747c00822fff0221d
*ed09114735b77b6ec0e6ddc24b33fcf2812aed6bd3e22824aefd3887e28a8993cb47fbdced5f3e
*a6f27ad2d58b351640ac4480a63cb40a50a0394e0d0de698a6ae4e44f1ea73b47e9e44f1eb27ab
*cfafd6cf4b5e73cbcb6564c18d5142b1eb67ef9300f420f17f60fe50cb3bd5eea64e84037b5f59
*3ccb9d80e3d1ef6942c09747ebdff5b036ed0d4c33ae5a5f64df9c5f642f27051690ae748971d8
*b32636568f42918e6213d34ff2d3fd8be293a4c9eae2723dab02a1430569185d38a5ff4a5e2dbf
*75d8f29fab6fd6cb65e4bd191d230d3b8a902d0fc6ef444382e71f15e6a003e3dc23fcc8393fbe
*bedfd7f34ed30f1033743c38487cc18c7e1a9b4e18497222516094ccee989671d44ab47e23c5df
*bc241964f5793005ed034968dc570606bfae05029443c71a06ccf1f01ad3b77f5c9f5f792134cc
*8f3e153ba48e811f7dfe74f7fa1c707f0eb83f8f1cc03f80d1e929c963fb70569d66c0033c60fc
*194c4d8de79a358847f09ddd30c34ff33ac4dc22ce5fe25c3c7b8a9a19e3ef01b1bf040ccde77a
*cffa3b82dd82ab51a4c17664b7426e20891a1cf6212e378793d38f1304bd43e7aab1b03744c49d
*87fa089a25940d9c93875090286c3910fa81c9dd37b4b86951123a03ee33678643096368428da6
*47a370c674c77973066db701f97447c7e2710bce34136a35e78469d71958058e2405d41d8b678d
*c8f3113bd3c556dc7257c96233538b22cf2030782c5a4ed4765dfb40ac224d6b9d09a78e171480
*6cc4773412b10ad3c7a563588f55afbdc325df80cdb71c9d0e0effe7df457ffdd0ad8c0dafab51
*c2e26706eb79b820c6946f36b990951add3ab8c88b3d764b47bde116d1c56accc907f91c393a09
*a303ec5e4ebf729a2e630d7483329ecceb81b3d391d2eb5f7ffff8f6ea3ab3f79626338dc59617
*38c0b3723feeb5a3bd3db70c2bd77c77cf763c1f47020886bb17ace77ee25f1270029442eddc99
*8d39523ad0d174b59edec8701943ead842943dede5a9e907ae04280d91447de33c9a7e1c25b619
*9c1a7acdc73d64d8eb1cec4af7081ce0af1cd3a586849ac3046e295391be5864279806d4dc17bc
*b153b6a704ea7e79205b56ec30095c2b7769d009f12e8a3fbcf9e5fdbbabebdf3221939904a83e
*06af7db7505e0de1cc1c0013d0caea9a4275b228c8c2af6f9198bc28de49c5ff5bcc849507a4c0
*4e6cb7ad818607dd35b0c0d96ac2b5567ac2630e2683a3391cc6c9eaeb75666f720985177f2b0d
*3d28abf25a15508457b43b155d9f1c16351330abf721980077160156bba92f8e3e5ebdf9e9c315
*feabc3bf610a443394211890e1681ee9928adf43f44c5c9db8b78491749887c78db9cf14d79d8f
*782308832c194c3bcedf084b3f3c13b3552d4c055b0665136a3d5115d65404b64f70b476ea1bec
*e49d635c5e6a8827b4b91ccbb4f34e4ab0ed41be6a9f1b66749a80cfc7320e59fe945ca38d78e9
*eaaa0d0935ce4fe75d2f83c6563a08638fe01e95fedf687dca7157f526856c50ec6ffb59516de8
*647edf32e32a8b322905853b186651f72c72283b99e7562b9121cc9567856a0e29314242771196
*ecc5666bc90d0705ba3c43425ea6483b137207bd48e1adef8e49eb0eb86572c3c7bd2accce1346
*b0cfabf7a61d2306cd7105281e9d3c259e7a5a86ffb7c36406629407337c260639f3e7e9e23f50
*4b0304140002000800455459394f3f761e37010000730200001e0015007365747570746f6f6c73
*2f636f6d6d616e642f5f5f696e69745f5f2e70795554090003824a0349df028b4955780400e903
*e9037592c16ec3200c86ef3c85d51dd24a118749bb4ceaeebbed5e558816a7432280304997b79f
*21a992495d2ef8b7f1c76f8252da39a5e0082701fc35da594d4d0bcdc558ca0a6fb755a4d85731
*586714fee455c4a9c40647742136ed8c424d93b29e321f51cacc62d985126fd24ba89cbd149942
*d6194b447ac410333d78544cd40266ce9728e39c19a20bda6c694f0e53744d76c34b786320a675
*c0bbf5652f6f380b61fb1852069a48d8ae2c72c44436f88f63f32adf9af74a79814f0f5f53fe0e
*1e380bda1bd09730620b053964eb08acbfbac120079920dc3dcc7ee11afa9e1b2a48cd7f4226ec
*b97bff18e92084e852e8579a5cba64f50c8bcd2a44715aeeb9011fb8e4e7b4ec42ea75564b23cd
*ce9f954eb5f9cccf61ffe701ec9609254be8acc3dde15f06491d237ab3af2cf66fd0cd1bdb7a99
*bf504b0304140002000800455459398c488c3367030000b0090000210015007365747570746f6f
*6c732f636f6d6d616e642f696e7374616c6c5f6c69622e70795554090003824a0349df028b4955
*780400e903e9039d555dafa4360c7de75744acaa812d8b765f57bafbd4f6b1aad4c7ab2b940133
*934e268992706769d5ff5e3b133e02a8aaca0312c13e3eb68fe3deea3beb84f38317d2d5adbedf
*b9ea6aa19ce75236529c99b81b6d3d5b1f71c79ad577164db4cbb25672e7d6c6c5dab2fc9a317c
*f23cff49ab9367bceb18c6344242c77ac92f8e79cd7afc54fc0e8ee99e29ad3efd36faab56e1dc
*a16f16403ae859731e3db4ba8366f1291cc8be62665cce62587a1207c75ed8ebdbfcafd77672c3
*0c128405801e41b4fc645083eadc43f86b71aacd782a535b7a5aadbc50036c4188691df3df7ba5
*546b6e0c062a26823fb2bccdcb43446dbcb88b3f817d639fff07ac46d8d9cb821facda382d0db0
*830af55e251d289c0721bb62a1a7073f153cfc8f9a585920f9d948b850df5fb5da94e503e3f2c1
*473789a6a23eb5dc017b00bbf277605c8d0cbe7b504ea06250d7e720a90eb864d4a304ee491553
*6b225e31512897142fe01bf8deca8110dd36dbf0a703ccebafbfe743e5cc9428cd9615671c2fad
*ea2025c35b68f075e397a99231ff82fc70fc9e9e14b7178a4bec64d7c4c92c4eb172a772dbd8da
*097591d0bc8325a60d55c1a2bb1c1bf4c460ddecb19168d0fded42b544067bc5186e3d750e6d6a
*67a4f028f47d7cf6b8928082f11e23e0dc2e9db008a45d6db8bfd67f68f194cf7ce1e0ff8a7d0c
*18e5210671ed89e9a9c18b45f8a6a199ab92cf76f3ad4fc77c56fd7b4d283d89567df98664bf1c
*e742146ba3cd4ac2715622e4a2a056e374790b50244342e2ed8388a3eaaaf9b7b1e0c0be4373c7
*997bf9522d0738d9e0921337dea55037f7f2b96212de41be3c19af9a8c5732e0fd9ca006a1a5b0
*e1285c6c5bec03b9cf1a5dcd4699c89990a27d5aff58a7f562a8971a1d966685fc81fd1c49cce3
*c4e238b155d33f3ed705eb69c3f92b109219fc82137e38a462bcd6b8fbb86daf0273a64d382dbd
*411132a9125aafed983acf7b733297fa921d5d79b863e6631284e90b67db8a75ce97bbcd8287a4
*efc3cad18341ea07b7aac87fbf096370e8a775cbe992a19df9036ec15d71cabca2783bbcd88d5f
*b8749065db48d8075de4d41d0a84c09fbee13baf5848609a1a2c10c52b28401a61aac2b4677614
*62783c5f826fcb5e6c07052bb81bbb29527a733fbbbebbb6e331f62651e1cee33f0b7fd5c07fd3
*fc6bbfdc60130774790ecbd2f5b783e4c836fb07504b030414000200080045545939361d3c6dbb
*060000b51400001d0015007365747570746f6f6c732f636f6d6d616e642f646576656c6f702e70
*795554090003824a0349df028b4955780400e903e903a5586d6fdb3610feee5f715150486a6415
*fb1ac05fd676c080b52bb615289005026dd1361b99d4482a89f7eb7747893229cbc9801aa89388
*77c77b79eeb953b75a1dc070dbb556a9c6941b75383059979c996325a4b1ac69401c5aa52d84cf
*165b52ac85b19d15a847df5e6ea3e423d7b66a99ddf772edc3aed2dca84e6fb8f1621f50598b35
*6a2a59c01714fec42dab99650548a50fac11fff2c0c8789937d0a8ddd40daeb5d2a3c0dbc5f08b
*399a0214fe3b455ac0ae51ebc562d33063a0e68fbc516d168698df2e003f4992fcc92d742db46c
*f3c0761cb64a7b8503971605164eb2e666a3454bf1c00a129f3daf2624a4811a1c54cdd341b533
*5c57caa91ad40ddd28a3b31bb8730af4c9924e0e42490149475f5ffd13b07b61a04fb97721c98b
*4099ef764bcaee0af53e2bc9519b02b57b92b77bb00ad69c3cabc9757a5c924a23e4036c45335a
*bbef43586356399397a2981e6320e9e87e3ad818d05721824c77e0a6627ad751b2c8dc2fac311c
*e01a14a24b8b9ac39a19ee53bf05ddc9ccf0663bd48d3e620bf4a41c2f3a1dd1c79d1dbac68a0a
*4d9abe6e7fe98e9f4b8d162a8a3fcb47098e4ecd58f5d288952a287aa0e8c49e989678de6abe61
*96d73e3b28368625a4b0a2ef057f3a8932761043a06ac6a75838d749d3c3a844976e8a4db9169a
*35e68e59f3c48e062bd81e2bd79c2b48cb14a86efd11d011a043d8a6fdc53dc0369dae855ef41f
*1ffc56c81743e702edbb7b77dc565e9a00e480e4408ef16d559287a0e0a25c6bf5c065e5cfe312
*6a26106a1f3cad7c2456c92289e40ba219653497ecc0e18da676c1ef35c78a53d708b91bdb1dbb
*3cd47d03193ae06f2e66bcc923f94901b027a81dee061b74fffd7c41e7b337ca5e432b360fc46c
*aea64b4cbf6b71d7dd06946c8eb7c8c47ddb935bb11f03a9e06d357f2ecd86c98c28b5a4af2c7d
*4b5a693e003902a2639015f27149282abf2bd137eed834e888cb8a0fef261d9927cdcfed110d10
*dd88f1af330218f18f9c48989de9d8a045bc676c6de86716580ee2b15808e4cbd5645865915f11
*ec2682af2420f22acfe16a355cf922567f77a59e41ac43ed72e9591f0e9db144f00c31dc302b1e
*07da774d4b6cef47cbb9151cb8485856e923a13eb9e9dd5a9ce33580da27f64077d5c1d07783b4
*1f370e49a99f5771894905b31cae0b7164fdf545f42c5c27b241e0525d5dc7e5b17eabd5770cd1
*c1ef842dfa2b0873fcb5f52ce4cb5e6ade366cc3a9c686b745fa2e8d90d05e3994f59c17d7b375
*8c59be4be12d642d2e641d8e0dd2bff9e925266e23677e006905b479e42b1abc9ab3d83b9fff00
*1adf33995aa02662b4341ad4a2c5c86f1f2e3ee8772a07cb39280e813007a81197b8d2b4c5659f
*a3f13a3fa82783e61a3ee24a82cc7e1840454c829c69d512ff9a201637917102a51e616948bc3f
*77a2a9813f63bcc6ad43422e1d602686783093478b6b52ae50392d50cfa9ada6d8885c38294ca4
*7cf04658ccd131cbc937de076af7cc7a8ea3c940db248a2d0ddb4ef8757c79c01dcf6293b2b61a
*b38a559be3da604a65af1ac827065e11f76b4990ee8de6582460325861879d768a1f040e3689a5
*f18d10443aa255653485af1c2515334bde9349927a632073066901307952c483ae8097e6811d28
*4e1f2bac589ca92d4da296cb2cb6973c257142708bd458982c9e623790fc2d13fc31a18aa9eea6
*518667d152a08c45fac33735136608b73447deb8b06cc533458ecd59b6441883043debbbd51481
*3d8420ecf1cb9d6bfe4f874dea76fac93ad15f59851322ebdf4bc631509c522615edcd260f96c5
*c98e7efe2ee069903fa32d13e775c263a742ffc10feaf1470addbfd8483bbcc6dca130ce070ab2
*c586a319484f088fb4774dbcba8fcc600ca325ca04ea647751ddef0bb89bd0f90400f793487db4
*f42a9225bf5180ae034c1fe7ed29adc0d6f832cd6b8cdc7b919f99d278919653af5f463a7db036
*9d1ceb764ac0ffef97fe35a8253aae5abf87116a1cab692a2351c0d181167c253b73b62c86082c
*0740c7575dc3b76fdfc0ec55872c8eafa50a367b8eab341513d3827b914ba1ef86abc57cb23f2b
*cb6fe1a8ba7e193b251acd0c0b843701c8e41d1e1daf923c7e45f298a78c0dc22ef4c2b56bdc00
*6e95122648243e9886f6eba99b715fe3c84035979b230249c196bc5be3ba46a9ebc72bee907bf6
*28945e9cc360fa7e79c153e7e80c5f3f21b5b75c8f3918287bd808cec89accf87a85d6247f5a1a
*7b6c785996f3f36fb868f4eacc21d4241a534ddd5b1a8fa8e2bd56bf2aa28b17314465bdbb9f80
*b6d7bdf0e211fe4f5a165c93e77346865dd51b2116a2475970477e61c29c248a547f4d67cd5b5c
*205081b6125667afcd91f31dc359c97a1a0f3c2e42fb0544ce5ef8fc07504b0304140002000800
*4554593954894b4e8c0500005a1100001a0015007365747570746f6f6c732f636f6d6d616e642f
*746573742e70795554090003824a0349df028b4955780400e903e903ad58cd8edb3610befb2918
*050b495d594dd09b015f9a264081342dd25e8a85c1a525ca6656265592dac479face509444c9f2
*ee1ea2836173663eceff8c5c69752286dbb6b14ad5868853a3b425efd4e9c464b9aa905c0a635b
*2b6a9373ad951e987eebcfff6cac50f23d12579e66cea6136e1e0e5473a35a5df041f2a78ed64a
*612d37b63ffe07be7f54ace43a232726e46a55d4cc18f277c1a414f2d0d192912dddac56049e92
*57a48613a4980f00fd872adb9a2786d71540b91fc04bfc1345d16730594bc2886985e5445584d5
*3541650c299801550b252de8c04b2224b1474e0ee2914b0fb61ab07eaf1cb13b26c20064c38a07
*76e09953c9633a7bdd1503b3416061f32b5047065892dcdfb3b214e85f565387757f4faa561678
*9481ae80292c70960418072c04d29d8d8fac6e39b1ca9d39843cf4c428e214dd92bbdd70242aaf
*4d4ea964274ee9ab6d3c664bdea195aac02ff18690d7a43d1c07f10135674dc36519442ebf1a2e
*1fad74156a01ce60d6eaa42366249a3b250ac27b71adb7612e933c73494c69c3ec91d278065e29
*4d2a81e196a4cf6d5a433594a2971e1c063073717f1d22e4a09ef92aec3189f3e61ca72e8e4800
*3f532aa03e2845c225003ea6ddfb64d9cee3741be7f12d02dd6dd6bfec2ea4796df83226283698
*c4bf0974d3221f3e17a6e285b7f1cfa1e68bc2e9e62ae64b6c5a14be6e123e58cd42b697a29344
*c1049c66e627b83919749a254ccd65e2e4d357dbb7d3bb7ded3940d762de6127f3dcabeb3a7b39
*c777f7660705552a195b5268cea04f312281023da96b5b98884ad667f8e8cb7dd5374d84487c1f
*effb2494bb3fc17ea05be95ab0af7c5659ae21a5d74dcd0a4ef6ada84bec0fbec39a420bd7e721
*30d14b443bc1d6704d951374cd65b036895176dd39761b67f12986bafe0cc08e409d8531969869
*78212a015677cc519acd511c338298389bf833c2487a6f7993139e1f72121b0539e5332cb830ed
*d177e368c16c16ac16df796f89cb94208b5d9c471430f4138464813ce4f6157aedba634f1f55a8
*845c54204cc7b912308c10659a6013be716a5d322e9be54e7021d062dfa2260179f57c395e010c
*94b98d027a1454ca82e2b3d261c2f0c5a5e4b28345ffaa16568cb3cfad331496f70554945f0a32
*c8634ba4b264afec319a60047d60548ae9834bf19991bbcb203d72bd5773ff4c817221a1726cf2
*268bd76bcf1fa7cbe1f649b318c685d43a70ebe6dc452cb338608c3304fb313746c1ce50740dc8
*716ca69b1db48c31e3712ad246ab2fbcb054490a1ba51bc77ea9c3152828c0d7e4bd34ad86ed09
*8c2b9965a85bdbacad5ac3af59a54117a05e8d24e687038cab4ac5414c5f935fb18511fecd7269
*5cebea9bdb0c8907bd618074fd0fa6a7858e26a413dbbe4d9fd061140894e08216a7b22f11081a
*ed9b40394846bdf65120a8000b3d85a26793e3d7bbcd6e42ee37d08ec3ff82d034e72400b2fa3c
*0bad871b9313ea439f3af35d703aa573546b0f6b749a4ee4bf2afd00d1a6900e79bf2424531658
*d22883e5f6916146baad8a4b58fa6b76da97ccbd8b6cdc67eeb97832bb44f3ff5aa17912df98ed
*f6c6c4e486846ae12e9191e0008a0b433c43c1fc0a5473aeafafb803bc0b9eecdd7ec132b8b7e6
*4ccfcc0de96d83a99a04f17991f7c692819c9a0fa6be6a272d1ba267c11aea3d6516ea77c25f71
*5b1ca94fd2c3c124cf43a64f6be0d6869ef9075c3fc14b9f9a8ad3cbba028b499c7f51a273ded8
*82d3c5c159ea3305475f996dd0ce14640e649f79104d03e122d1f09a7b632292803c062ac5bc84
*ebd3974ecd1119a4e505f022dc20fc643375bdc86fa69364f2af49f394ea5ed6fbcb87f3aedb53
*de8047df4be81d7f814b2d1488363c89be6da3dbf96448e7b2dde6ba1da1dc329ef8b86e3f3070
*cf28d46b90e37f05d3198f5329f39f77031fa5f8f640e9ee761ae8ece2d5f1633fb942c582d245
*473df3fc0f504b0304140002000800455459397e33f9e31c0c0000cf2c00001f00150073657475
*70746f6f6c732f636f6d6d616e642f6275696c645f6578742e70795554090003824a0349df028b
*4955780400e903e903ed1a6b8fdbc6f1bb7ec55a078354cca3ddc7a72bae4012a78d0123096c03
*4e7139102b7225d1477105eeca3ab5e87fefccbe7749de23edc71e9c805acecccece7b66b919f8
*9e34ad9047d976a2acf97e4ffba65c1fdbaea9d8bd24edfec00749fc0215a46a8e955b58c8e17c
*b520f07741be9592ed0f92484e8e82915fce03bb271b3e68f4b6df124060bd68792f0ad26e08fd
*4adb8eae3ba6086c90198554be752c3dc28ae783ddd70cf67ea7a07e18063e68b63c08b94e585f
*18921cb81167b1d8c4d2d8b41dabf0d16e5df3c3b9c2550d29983c1e24e700eace6541dfb7eb81
*0ee794640d123e0081c1c2f5ec54d9b5141858aa79bf69b76effa3907cdffe933994826c99ac34
*54f5950e8bf867be7cfff6e38fdf7ef8e1ed72850adad33b46c47160240012a4857f7d2b5bda01
*ede6513642dc04d882747c9b9261a81207f0cd62b1a35f5935c8ae01bdfc8d76822dc0682a005f
*0bb7d2b56b793e30f89d891d1d589381d236a8acf2d05109b6b527d7d764d9d0e1d4f64badf190
*cca7e1c816ac031c2eca9eee197901b47a99695067bccefe1aa7ed0f9fdebfad7efaf9b37b1f32
*ace8da17a30d7171ce1ef1ef4085582c1ab60127a89a2e172bfd0ed8749b78e801ec6ce8895804
*3f321084faab3ba0e59d22f7e66d68e22ec3b1cf05eb362b4f74b95c7e8790814b82116842a0b5
*81d5920fe782c81deb95e1237397976d0f72af19603b4a1cb633cbe046b04b697e8134c29f0579
*e3703c97a5e3cdbd4c6804f41d08ead32ffb533974e5aafe6895e495e0c7a166f96ae1c4320f94
*084b730b323027422fdbb4bdf697ca44cd3cb360993f0b463f15bc7a8de9778b99de1cbb4e9967
*b003c056763d4751e1c32a468320308966d6738b1fa3ed7973a0720758f67d290e5d2bf3accc62
*c803adefe856396099955f78dbe706f9e6eaf20fb793c015980f20586928a68257b9798e711b26
*3cdba875f070d8456f196017f6c59a0a734483b48a098aa19ea5a764a5f9830853380a8b880224
*b4ee44cf42d94941d857f0040c3eca44306882094224973bda2bf6c1202468b6c0fc074a86309b
*900348890e458676bb93a1e7a199e08bfa380cac979005e58ef7af5d8ca3235a10739a325a73d9
*298f96535914b1a80bf2950d6b2ed8b5128af9518c4834c3b90257d550e64704144b1fe484165b
*f58c354205c7ab315748ea34b45247cf50cb04e4011a0371a0ca9154a1222b68c806ca20af832a
*7a2ee3e44ec023d5ea8e0a2ae51004c6223b6091617c5d6481a35f90cf7cb8a3033f02362ae530
*70284ff602e48df58be07b5bd780a4b4ee4eaf3f7e7ef777dcef3520fcb1fcf3c2db3458cb0932
*a5d949d95d610c086a8e6f38e81cca84ad585d25eaddb48390a4e140f66c360456000bd988ed5c
*53c3e2c607d5f95d57285af39cecf90943bdd992d6f2483ba24e06cad940bcedb5e9b23d6d7bb0
*fb08d964a54803e5138fbe58f8883c8a5f1acd45b120597bd70eb69cc61f07415d0dda885cede9
*e1c602dd8649a605710b49fb5a05e0c2547589b6367d6108da20a3822966631f5926a4a5b6173b
*8840ae9e2b3bbd4310c0fbc2144101f758cff8a2032d5d395bd7f6772a8b3567c06deb98cda6d8
*f4298f0f3318c5cca6c89aee327bb5e9434644927c0da625eb35eb0bcc8a1f304c8a34c9066a9c
*038e4b84587470b49f78cf2640d0376e6ee31746ebf0e65ffff64cda9cfe0416a741479bd8007f
*3d5a01374c99aa77acbe0b0b920eaae73c415ccd9d104d70bedc1845dfc7ad3cf28460b389724b
*b54255ac90fcf95590b26274c4ea99b5d0ef28b3e2bdc6471ac5058d130176b2b19452df83f5df
*a6339ed1187aadfa9d62e2f15494d62dd0483e3ea5c21ec801528aa301e6bd19a5ce958f5a1cd8
*f1fe8e7a120ea46b3e1b31e097027f52d535aa1ceca10c59759a5e7168c3232c8b7141914294f4
*706050986b3ab3dbc4b2736547b82f143bb2ddb3eaf1fda7202d1f8e74d0834c7a4e1276821037
*1df8c229429e14857af5da7445766c3055ce15e846b52904d5e3625cdc3dda7ddb3fb9c7e81ace
*0a545396c76a881a705f8afcfaebafe447d61d5e10f20e4a923e93aa3156a549db304a4e3b8605
*049624826179ac6beab22c47d442166e323b10c9d09f97dbba26979fbbe2f29e5c1af703d1924b
*28ff18447806adb05ead3aceef8e87e523d4bfff3ea41ed27c0cf3e3cf1aa76cce93d0e3d94f6e
*1f529f86c4d44d48355645c7e890e86204743c3454b21c34f950ca7f90b3510a69fbba3b36aac8
*17b670c7bc7d3569b69858aa10251f11598db6d0aa9b277e41320d92119dbc1194124cb6846f48
*aedaa2afb483768380737649a18cb92682b14947131d0bde1d46034056a9079e9be64b91181d41
*d9dffc09900545c5edad101ed8da1ab4d95cfd7fbcad0e5a2d7baa661c7c1ea3cf513e3f47ed21
*4a3e2232de6250238da7d19e8ad2b9a732c57f7f57f1f51756cba7f3ef51f21191c0352e20b6d5
*77d01bf96969e6277aba8ec9577a451baa629a607e67b419a509bd8f9e979aedb052182d965585
*f9bd0add356dc570785989f37ecd3bdbc3f9d1e2739a24d318608a8ca9a663ce513737660139f0
*8ca6929ae2b24a53a89bb9cf26a2a71e2c18393e94a5239ce08c93dcab03feb7e394c98aff69e3
*cba04a1bd5bc713930996d5271782138a58d8ade29ad2d97cb0fda28e4706428840c00328d8c53
*366ad333fa04c6429c5008ac5fcd2c299c53ebaa42eec07bc58e1fbb86a87ecb4feb14b62224cc
*fca33b9335c3b90fca432694a8b0bb17aee8fe02b9d08c8ac04f798d242e376a9a64e64558d8d3
*8412d8986ceb4b232507ba08ca6bcc16d8e5352df82d5e54dcb1b3c86fe04dd830615e3092085a
*8d604a7bb8db86a3dcb8070a66c06ab8fbea26cb6ee31ecb701297e310f047ae031bbd0a80ed09
*aeac9747f727664df73b5100e2477938ca511f6e96c7b39f08de834396c702e5c9e3fbd2623cbb
*c17c8aa3e2e4fa918934f9665635e39acd1cda761948fe555646d7108f81d613b078c762c47035
*194be688f180989d246950afdc204e69cfd710951ff71a6fb8565611e8bee35ba8ff363c5f220d
*3594c556b8e31487f1a8a7972a36bc14cb221662b8493045016cd5dfa62a09397a401d5ad4613e
*349cdb6e525164f790dac12eed666976a42dd884bbf556d7851ef8d592d06e80547f269ace0bf2
*0bd4ef80d1b08e49562ea382050351d8d725b5239e1314e6c917d92951bfc92379f65b6f22c5cd
*c80296a8c6aa5a732e851ce801ea88d5d5727c71b084ffb61d5fd32e862ee0a79a37a827adbeaa
*9a2160ae64a1f32cd46d3d84976a606e9a0caf97aff455ea127adb6eb99a266377041144144afb
*e4071d95523430f772582da7ccff2519dd44c53394191e4065b120e68e0cd9cecb25c3c8a3c528
*e6e54c1cfd07e469e4646e6e371dddaaf12434f510179b0e6d432de6ab3931229e9bf700527d6a
*00781a16ebaa596e7120b2c32bc1746e6415b55a3d7800a2d81631db4d57daabfbd913288b2a51
*48ae00710a777bcfb06d4b9ee773e6e4fd005f5e245ac8935c246e3705b2c4fb4636ec9159f25b
*7c5577bb4addbdeeb860f96a228a25c123fea623fc38667d966e0210e1842ff21b17756e0b975e
*aedf14b3e3693393c27a617a6a151fe589a95ed5f510cc21d74e65fb24fd91bf92371369fcf173
*d987078ef7fc23ea6f59a6b38a2b44e7e3bf31b2638f557480ba505fd6f859a8be81459fb8bef6
*1fcc5c10fdd5886e24892b00f5cba8bc8f9b4d9be675f7eb52b1290cc3d47c8d7d751116bf7a0b
*bd4ec296dd2c4d75f30995b88d34780d5b1fb7607c58700cb43a408a1db6634cf58e83c1b897a6
*e7c4afddcc02bec49e9ff6db6b770db5ba227e7a908f5b243d2bacdebffbeec3b71ffe312f9cc5
*b8ead26589934d2c96698914c955422810238b44124572f89882974174fc6066ec6785ce6c54a7
*e3f9c68f2a86f369c7a0fb62f6b623fce84bc1678bff1b56625849077962043b0ed5cbb66a300e
*411a021c3fd909b99483c03bfcf7c1f008271b81522fb47d0de44487fe355d6354579a51433028
*c9d597037b062d74bf0d27ed17ff1b515e4cca72428493a2f3641219fa411b1582e1e79ece22b0
*d347107578ff11a3ff88a4e14ce0e5037eb0a746078b09379cf8ca48f707b129fa286e0bc6677c
*3690ce515d9dbabc5fae4a94831427d07c9ea994960ebca154680f44bd2320ca4d7bff173d0981
*7f77ddb1d99ef5974d3839b1373b900ad22f44280869b361ea13254d669136b64610f6f1e64f57
*b78be4961b54a97a3f746d144e1c199d237b298521cfc4a9e980f31f504b030414000200080045
*5459396fe6f56cb802000075070000250015007365747570746f6f6c732f636f6d6d616e642f69
*6e7374616c6c5f736372697074732e70795554090003824a0349df028b4955780400e903e90385
*554d8fd4300cbdf75798ae56d359aa8a0b4242dadb0a890312370e80aa4ceb76036952c529c3f0
*eb71daa45fb303bd4d6c3f3fdbcf9ec69a0e6a496e7052515199ae13ba2ea42627942aa9b2b277
*04b2eb8d75b07ffe9680ff0441b933258d074641976889182dbae0540adb520e74a1127f633538
*71529843f5dc997a8aef7fb6a5453283ad7026f1c46cad3c3161a373f82cdcf32774a2164ee480
*9a068b652d2d56ced84b12624c2034571ac1946993a45282685f5cb62fe9f87eac364dd32703da
*d84e28984c3134875e0d04425f00db96e31b03672bfa1e6df0248e4e46981a1b0e934e0a25ff60
*697a5f0e6584aa0989fcb7e750dc0a9923fcaf429b127b78840f42112ef9eca0f70946777e2fc3
*e4b334324f174cd94c7ef5aaf34560b440bdc8774e0970e7f343232d397086111d0cfd046c06d7
*4885346321f3de226ffcb8b4afdfafe88d556fa3eea036fa300f88f5e1ec057a23b58359db9ad9
*145c3678ec579b788b6eb03a5978c9b2ea6a4e3f26f4526ea41ec751ffb383be731cb5966eb649
*34017b16e549106e759d5d59570f3ed331bf05a645b775ff8596fce2cc010bc913fdbfb8c36990
*aa8ee33d2cc1cb063300c70ae76c3621e687c578c8b7ebbe1219956756b71e1b1501ae2570a3e7
*27dfe108901e7338940cc882e387f690874db8aeb93116fc196215ec2f53e62173589fa685e3f1
*05759ead741810b2070f714cc62feedfc6c187e44184614c95d18e15ca37912f203ea62ecde141
*b67c6bb05e25e41bf2c523f1a159b7ddabd72f967bc659dbf321f47727c6f3cd2bbc6ab2f4e3b4
*16dc22b8a778cc18e29ed21db5b1c0b8dc8cba74d071a1e86766a8e859b4c50fdeae6cefbf81db
*5dabb8d585bf943ccc09f198ac175c1b176e90bdf8b16edbbf3ffb33c4daa9f11c394130e6e939
*7dedfbbcf39ac698c559ecad953284d9f675fcc78ab06fdebd7d1be67eebfb0b504b0304140002
*0008004554593952822fb0df050000aa1300001c0015007365747570746f6f6c732f636f6d6d61
*6e642f7365746f70742e70795554090003824a0349df028b4955780400e903e9039d58dd8f9c36
*107fe7afb0904e40b24bd4d7abaed22949fbd40f2552fb703ab15e30bb6e584036dc661bb57f7b
*67fc850dec25171ef6843df39b99df8cc7c3f153df8981545c0ee3c01bb9219d8c6ad19d8864c3
*d80f5dd748c2b5d0dbee74a26da5b79d468ebf56a4ecda272686a2a7c3712667459aee30476042
*74c209bc8aa2a2a04d5314e48e3c240059f34351f386251b92b08a0f855ec3d7ae1f78d7167b2a
*d52e380d2bc963144515ab89a79b7ee26d7517375d499b38bb8d083c711cffc206321c19419196
*9e18e96af5ee11a25436e4d0747bfcdb09d233b11d2513063f52603b34b023a7510e640f38adc2
*32063724d6fab10288513bb63ea8bfbc26cac3bb446924da437c042442b42ab6b1cfcbfa90cc14
*34f252a39339e621ffbbe36dea36f1b13b151718743aa5a250641545b649a64567139f6c661d43
*f16c57dd00690303080cdb7d27f9e78440dd90244f30f824b9e628fbdc831c02a67e21a5f17f6f
*6e647f091c8ac90ddacab43b8272c9c89fb419d97b2ca629dcd8af818c0c979eb91c19aaa16e0c
*852a393a2248140618e990670fd6965788a9ad9e0d9e9a81b707289b4a5c0a31b6773fd346b2a9
*e0de831aa1a6724641b17c55f591a123bc2d9bb16264676176a6b6dc3be112b42b5ea21e1517ac
*31f7c699c40076bbdfa0fa763bf2847c802b9fd88555647f5158a53ec56f24535a04fdce09b99f
*a99113a3ad44a72ad6b081a953c1da810b468cea46e19d8fe87ce0530389928e0ac400b2cb236d
*0fe00638a8112b081750e960f17285776f153134e7d3d21ba5a704f3e020a9def256d1fb071578
*4a4d5ff940cffeb212866694576c3f1ed2f803a3155a9d6506d16e245483cdb12e38e83212ea7c
*86994e9bb900bcf4c16a3dea9d1aa2b7ec11ddbb24d260b9caf9c04e32cda6f30407cdc949826c
*dc06471923e06ddda5f13b640623b0997db8918f5e00ce6e1889eb09dae953f7c40a239a9abf93
*20835a0eed837f2d1c79a57da472a11a4acf38bfaf14e52d3b874e439ebfc565e736adaaeb3e5b
*de358d1b5dddc0b9a17549b9179a115e237e251c97811b99dfc889fa553d7c66a530c5b9aa91ad
*aefa79d33096828d7e5d57f3f36698782667cf541b3bf5c345a7cde6f0eb81af50703dc52faad0
*eb95ba4cd8554bf147d3827422b11c0596cccb92a98ae7fb730a3d6196495dbb591485a9f84b70
*e3eca24d992c9bbb68e2a3c63bba67ed747325e724fb511b3e031e4b6b78adf3b2e924dc9b5154
*36544ae28d5ba91907a7abed7e2f07414bb85a619b68053c78e6c691ba699f182c9ff970349d56
*792cb17b2b1cbc7c0bdbf160fe732ea7e692de4ec31ffc2ce98b257d62ae6742eaf0e29210d1f6
*cc2b6fb0c32142d98eb38d6704ed7b26c66f36518e42c0fda8024824998d2b2b962cf57768a75e
*b5b33e25800592c20842c766b873536166d11f35917b18dde1d25ce572496510b60f83a30e6fa1
*c068c3ffb11d065b45537b7d025f730d6a6622b0873d339450c935fb6455c2cde166d3f950f3f6
*590faca20af4d1bf3e97be857dc169e6b4872351a5fec46827c32c5b407ac1bc0450d5c70a9c8b
*1c6e1b3cb3cb1b67811be8058808e0c45fe29d9e8843f71aaf4fc8eca71f423c3d7abfb3c5febb
*4acf6c087705fd2b4edeb26725af61746d9b8bfa4e5a29739de5956eeb1c89d6db68c0c9068a61
*52c0477725fd99987add6cea621ff16c9b96b56d781b1c74aacfb16d561593a5e06a1b2cc5000b
*1f3a46de8c75fa70e2d44b212947f7d1a881bedaf38c23aa4794ea472fa033a139e8b449d05ff4
*3a6ac267b2fed5925a35148685adba5d943c7c6ca22d3dfd982f62ad1c6ae9cb586b08d4d00b24
*1d5b00cc949e02b16a8fe4b57f87e47ee4d7da962f3fdf7d4d1eac132fea573ee635e9b0a42cef
*6b4dabb315b0dc021a0a4de3daaea1eba5bdcef77e5d76d15dacfb669425ea3b64727d75c27de6
*64870779bbb5f0afe0e715bc9be3bbf463e2c37a826ad8ae3c42bedb0d57c518df76abd1e26c62
*1686a03999fe777c14ce734127f9122d07be89d85bf2c5e313e2e81b5a423fdd269ba448b2db30
*f87f03ac7f374bbb6662f3feebf23f504b0304140002000800455459394fbf45adf90100000c06
*0000230015007365747570746f6f6c732f636f6d6d616e642f62646973745f77696e696e73742e
*70795554090003824a0349df028b4955780400e903e903bd54c16e9c3010bdf315a344112079ad
*2a552f91f6da634fb955956560a06e8d8d6c93847e7d07d60b78bb59b59772329e796fde3c8fdd
*3adb43a37c1883d29ed7b6efa56978356f89576594f101543f581720dd941e44b293c534eb19f8
*c96759ada5f729aa4821e55396017d0db6503b940105be61e151b70ca4ab8dec91413b6a7d5a55
*2af472387eb106090af14b39f9df13952bc542d02a8d1e8ed0619021b805cde7885315d9630d83
*7c4bcc197cfd56662b856a610104e98840bca0f304d9542e39a44f6a8d4ecc32a894f57c90e13b
*ff6195d9ea89463996006f7f770f9e53f71f1f0fc3444beafc0e1efe010fc5e6cc951eca32e11a
*a6b84ffaaf646749f23db4ea0d1ef9a78be9519db14e990e0e8713fc7026f503d60945251baa54
*e40941ce7269a69ca58ea642e94466ac32bbe37dfac3962dc61df6f6050b026d44a83dfedf438c
*e7b74eebfbee2f16acd1cedaab466d1006efd945562d7063c32dbf765ec96140d31433aadc2eb1
*43aa1a94d4ea178af89840bc86f197c524e1c72a6ef9e387dd75aefbe63c59fbcbc7af711789bc
*1b159256cfc2a8d3228f96904fe7a5d0aacacbb47312c5776112383f42f37cbf5af7939e183b12
*e1fa904235762bde61189d992976468da751d995593a16ca0b8a99f96a1ce1d98db8c6839b524d
*17efde4ab926b5ca90de0bd495329f250d7996fd06504b030414000200080045545939f6ad2b7a
*ea020000c10700001c0015007365747570746f6f6c732f636f6d6d616e642f726f746174652e70
*795554090003824a0349df028b4955780400e903e9039555c1929b300cbde72b34ccec60ef123e
*606772eaf6d8edad974c26434010376053db749bfdfa4a2640bc493bad0f0946d2d393f46c54d7
*1beba152ce0f5eb52e03e356b5351d38f443ef8d691da8d1e993e9ba4257a3798ec8f97772298d
*fe89d6effbc21f3ff84d2ead693e22a0b5c6ce0e8fab55d916ce8135bef0282e69e5f30a682549
*f2822d7a04d35668038a55070232da917115bc2a74a5553dbf840d24d51f23323821f64a37f00a
*1adfd079a8558b2e09308343bb3701c611ce36bce425d2aef0e5719366bc4b3bfa4fa8668f961c
*bd81600561f1c7a02c563291d9552c335857ca72785a712c6db0f4c69ee1ed8816c11f31e60985
*c51884795ff2437a62103d7407aacfd4637a2e2ac620621c35e1ecc65e1d68c658e8eb3a775317
*6b505a7955b4ea1d2707e1b0ad2fd3e0c5db7c2c7803af46636c610a7baaefae91e94c863965ad
*f45f13aafa3aa772217c31f3b28572082f93c2be06a0cf2c3311f905457d1968eaaec752d56720
*2830163a435310254b6fedb02f2c29b19297b9ce934e6ec104e64d0e69feaefa9481d21c9b2695
*b1a7bca92534e27f4b89992fe30f0a5ea63dc3797b8eb1af67a0b417f37e89c15f25f61ebe15ed
*8021ebbfb35baf0374c7240f0885e61cd8a04da2fa9553daf942972896b16670281cb2787523ef
*909ef4b6bd99c0f51524fa9c217a2125d4340c6ab1be8acf5ddf2a2fd22c9511cc2e1629dd84fb
*41933295c66a16657a6065a7d9789c59e1e1344fcf522e82b683be7b68e8fdbe1c6f3791904cf6
*4ad7e6aa39e19a6c5a7398ae467e5eac5cd0a8c4b8acb85d93cb66398ed38d903754992e3a14f2
*297d4c9f2eae51f8a8a54d482d8ccbb9adf977a3c68ae6d39d5d62a5bc1bbd9d432965e715a5ac
*65568f53e14b66f4dcdd06e78e0a177750738b346747dc579191be2f39f751240f55f0144e2e17
*e2834b3268518b8021b3a93df76987ffed7c2a9e3ff023eec2731513ffe71b352e6cc2576ba650
*cb1b573a0adaf8cb94ec794feab8c5e345ad1c74abf4897ab8fa0d504b03041400020008004554
*59395f4ee6ab4c030000910900001b0015007365747570746f6f6c732f636f6d6d616e642f616c
*6961732e70795554090003824a0349df028b4955780400e903e903bd55cbaedb3610ddeb2b062a
*2e24d5b6906c8db840d174990405b2730c819647be6c255225a9db3841fe3dc38724ca0f24ab6a
*215be4993333678643def5521938716d06c35bbd06a99346c90e349aa13752b61ab807fd21bb8e
*8993df9e2c4afb1e21b5142fa84cd533f37c851b21ad3c5f33a052524d805faffd97b5775cd292
*eccd88c3133715396cf899a2ee0d97a23a328d6bf08b55c35b4c921336a09fff1da4c19ca973b1
*4d809e344dffb24bc004d0ead0a130d048052d33a8a0674a737186e3856c5bfc5ceabee5262fc8
*cc995b640d5c4096666b48b3945e9f3ed9f72fa977601fde781039d882a27c94a09f5eb9389280
*a0ff23fb9bdff6f4759809eeda8445fa4e92a46e99d6c05ace741e693067f9161b2e284dca8344
*ab0703e6999186e245fe831a24ed512e9d540841666d9374e627d4b5e28e1576909e6ea96420ba
*cfe348c297ad9426997535caad89f3a31ad0fb1a34aaca676037f6930679a6b0932f483a03648a
*7ec202e483a08e282821f40a64c5da991d6015374419737b6f47ea2b64227218e3af7757b01f83
*388cca349439379cfc7ec111986b6c9b622e5fccf9083d81ed5749dad860de939ccb8d9072d89a
*62a082fc7404f7b171b3c69ea864d0a2c8a7b0a83b5fcfc4ae1119d7086fc763fcc1d1fe69cf72
*bec0b94e7c376803bac79a3717c0cfac36edc575cd74faf2a98e20588705fcf78c02d25baac11d
*cdcdc647ba0414b3366a10d7723876b40abbb4ec0452fc38d8b8cb339aa04c75e2b5c9b300ce02
*65d0484833976aa947af38a591863109bf7bfbf41e66b37c96183b5cbc0e76767896ed8d0c81c9
*8dc9b2bf78204d20b2ee98a9fc4870eff548522ccbe7e6c89c1cb694deb2e4bbdd55c903df6e96
*60b1bdeca1db98c32cb8eef0c9fbff907594f9d2bdc687dedecb10999b80dccdc3460e94882dd5
*934ae1c9037ee4e9d68be78df4dcbf3a24f725cb202bff965ce41debf370a3ad67bbd7db4311b5
*6a743bfa82dadbd09eab357c9d5a7b0b5fdddf6df0f2eddb3a9c0c75a9e8fc109fbb3f17ea7a92
*515c9f8e9683aaddcd3b461bf6f7167d18ef3a0f83dd2ebea2f3ecdcca236bb3e8a08e40c8361b
*bfbbf116902553b73c60b3d3fe1197ddfb79a656d68fc21a8de37ac68e46b5774f2aa3eef05bf1
*f5ed575616b3a2caae8272c977504b030414000200080045545939dac13ca0a70100003f040000
*170015007365747570746f6f6c732f657874656e73696f6e2e70795554090003824a0349df028b
*4955780400e903e90385534d8fdb2010bdf32b46e9c14e9a72e96da5bd35955af5d0436f518458
*3c4ed062b018d8b5ff7df1b7934d5a0e9661de7bc363664aef2a28348518b421ae9c47d055ed7c
*804313d092761624819877ac9c2813509c3188686b19d4050bb640e1f926962fb12d63c1b74f0c
*d2ea157fb71e1bfe6dbeca4bd4a610d8cc69e603868dc23ac08ffefce0bdf383ce45bea1a83b9d
*94f9bb34840cd3e74ef08f8fc8185346122d46d7d71b489bcd6671132e32402424c8b8caa0d426
*fd6a0bb5910ac195e9b86e9b319098ac97d025581756e907e56e7d02e5ec1b266f1d1170ca4410
*1c7035e30a2c41086d7510222734e57e27fd99f6bbddebfb7691ebd6e2803f645c11c845af928f
*67389eae02a5f3d0dbebe87c845d271bed11475bd0bb0e977c7881ed47d82a1597759d08391d9f
*be7c3d7dce54b6fd005fcaf63f911b37abbb264be3df54e85ffac54bdfe677aafc33a67e36fa15
*4182c77334d22f7db14fbd37f45fe8664126602f945e8702caa2aff5d8a5d4d2fe66a0d6fbb9c6
*ec1ac3d74373b8039a890f90a90ed95ab2aaa42d9621cafa4ab6c42b57443315727570fc27fbf4
*20eb5f504b0304140002000800455459390ca882586d080000831d000015001500736574757074
*6f6f6c732f73616e64626f782e70795554090003824a0349df028b4955780400e903e903c5596d
*6fdb3812feae5f4178d193d455857e2be0433e046df6b0c05e5ab8e9158bc01068894eb896451d
*49d9f11eeebfdf0c4949d48b9decb6b835104b2187f3fa706648f37d2da4264225449de02bcb36
*0d2f35afb22c219aedeb2d2f594244cd24d542069950e40a49d3bd289a92a97ba1d28aeed91aa6
*6a56c1243e82ad147b5270a51bcd4b9532298554845b691fdaf11b1c0eb28c966596c1d2fb80c0
*6771bd515ad25c7fa655b1114f8b842c3e70c97250e0e48db9d77f715152cd458563b2a932c574
*532f92601d146c4bba91c87c672a97bcd609a1f241c54b2b70b1583515a1bdc2c4d09296565949
*ac20bc225c2b2074eac052c3429445068368be4a1f98ce8f45149b19450f2c036107e7377cbd5f
*aefbb99aea473787afdd9cd1b6e3895329dd287c46edff308bbe1f58165bb118bbd1eadf04afa2
*8e6d12224968a9f996544277945c0141d4b2889738b1a73b06ffa87eb83741ef6b90d3c225c517
*20e8e71d5686c84973519f9c93b43cd950b4aafb7c1c6b94f977d4247f44ed3a43e27ea1cfc508
*effd8de8f2ddb4feb184604706059335d609956252476f1332230a3f634c7a2aa580ba68408c9f
*92ee37055d12f6c47234704a61d068d8a4f509203c37ff9f30cb70759685cb21a46102e18013f0
*baa7b88bc3ff4e980cade8ff634f39ab35f97c52e0ee9b270e1c0f437f024c0ee85045c062f77a
*ff76bd9c8890942b3618fd81dc0ab9a7254841c6bf354a1309dacbca906d790549c00b9f0f94a6
*2ea806947b50eab5de0a4976ec843bd344d45b184fb44742043a10fbdc96a460e520ab01e1ba5b
*dc61ceedf2381883c502acdbcec13c00bb547009eaed860a82bca44a915132ec32d657496b120a
*1512abb3094988c9378a43e2b2b8f1ce814bddd092ffceab8741625398bd0cbf0c04f00303f13f
*d112226706317b6619afb8ce32c076b9f5fc89ffa619d55aaa2e6fb71fc4a0116c5e4009741d14
*8e7802139776902e559a4aad8e1cd25b9885b131e7912a1461842748d5b3587b3a9a4462688812
*8dcc99a7a8af87a7f4284f306de4601944e2843cb811cbcfca8e7b91b8bdadc06d53e59e38574a
*421c0e4953154c027cda020201680bc67cbe320a76e60c1de695e6d4955a7f086184f0312c4c0d
*9e72eea27c279be1f6b45bd15813797b6bbc2b675859c0fc7145cfe968ac3768f122bcdf650540
*d86caeec08c8877e243241e97513923fa0bec0bb8d1eb019c106b9e17a1b3d25f3a4503a798d89
*2c79fd7a779ca60cdfdc69a2731c3ac74bb6a735a8c9ad7a7312e6fcdeea1e5da277b4a8bef38d
*0feefb8564f88e5d50c9ab1d3ed5696f5ebd0c0d16b5bbaaf3ce929422873046f1bd69e5303ae7
*3d3e8a8b0250976c4a9774465ddd8aea4ca0ba5730e4a5414349df10b1b6ddf2c2c5abbad156e9
*31f38bc13a4b3c8894d912ed3e38e3b01037459858ba781adb3ebf409ad436c44a435ec557539b
*f00517db012809f6451ccdc87e67487a3660b83818ac34558b16b9777ca0057638ea18e48f5208
*2bd86a30d0486ad4df0adaf2adb06f9555020dcd45b5c5779ae74c299b01ff1c28cfc1ed0c2cb1
*9e64361cdf215ffc75d0f350e52f178deed69fc7e5f742f10092a164b440e8006ccd510266c26f
*8ae92456c388febb61f2f41d8278367e20fa30c84ad1b9683c1be9e7426545cdc6c54ebd3408f6
*a86942f02d11f07ceb391df4e0d8799bddd6ef8061bbf31e3a0438186b418c9d98c9db75d0c39d
*0ce813727c64fa117a218377a4b1eef0bb2167a9e99f7b1dfc6d6234b0571170dcbfb01b7bb5d0
*5b66db190e6a469e8dd1d05463e5440917c1192d2e8bb6ebbe4db6e92846922f762f337a200f05
*87a41d23b6554808eedfc4b4daae55201dfb397da3997ecd0f50b7f8c7f00dde008546474fbfe4
*0f30d0223cdb0a61b6b7c7a3c9217c745ef2ae78184cf05c7b26226a29b1e987a866d35deb9037
*a456ac29c41b57f8da83d251720894a8f1d45300b314cd84c3a28abc1afd6c1dbe587f7b3e17eb
*f04ca57559d8b158c7678e71891ab8a68f841bf7ae8c2a38b3e754b1eec609927e69b381e3118f
*78d4926df9d3f4d6c9e39f8461bf6a14ae7478e0f493517bcde70e5efd3e20162164b403cc1d04
*195f1246de3abb0c71d58b3107682bc1662e0821bb0a65784e0c64592469af1522431a4a6dbe37
*e6fb0b7e7f71675aa47387b45d344a1ebd1b7b6b5b34f5da0c3519ef516b81a136c4fef6e9ccb4
*c562fe50ef89b6648b817f76b385a03b0efa75f1b983ee8533648bb31761d1e832a9d0edf4d5d5
*10dd900edb29ffd2c1876f7cb6a20f0ece2f391e3b4ffc3f0a1ad8dcf1eaae3bfa84f567c0e76d
*9679af5fc6e26c2dff8b4b99bb73eabc00a263c4c460107479b967507982da5ff4457bb4f73693
*976beccf2cdb92e27a9372debe7bf7eeac134a717c53b2032b312cf6ce6f64a36145fe46beae7e
*bebbc97efae5fa1f9fa70840a9cfa61f2b6031a3e34cee71da18524b690983c057e40a16144dee
*2ec0db1f975221335bbaeefd5e9ed084bc8d8dd91460dd7be463f675f5f1f6975fc9c76cf5e1eb
*0a1ed79f3edddc7e8097f7ab9beb3b78deadbedcbec7e7cd3f3f7d5c5daf7e5da4aa2eb98ee275
*804ab55dc4a44a0c7fa2ea9b88ebc1052a0125a1e66adbff82a57c7b22d0e71a5729738f8edd9f
*e2501f70d8a5a0ae9bb0a5190ae0f482d5791448c7ba2dc92bf54ac25710dc01cf9ae63bfac086
*7a41df3fab9bd18b407a38894612ab61a01f2958226d09c35c08b903b5bda1eaf4730529b22ccd
*7d72814434696f66c986b18ad08d9020234565b8eab4c96985dc3668f39695783d6f1881369b93
*cfd9b2db53732f1fa8a636bf10d2523359e111c2adb3490dcf2eb67103ec570873b0032f63cd8f
*72c60381f300487904ce29219f4a065503180182f6c630a764083e6af423e20a5418591ce0cf27
*1afe98346d22e4fa0263894229c11607d61d85dc51291a9802dbe981f2926e4a9642d4c82bbb95
*302304173e3f04ff03504b010217030a00000000004841453a0000000000000000000000000900
*0d000000000000001000fd41000000004547472d494e464f2f555405000357018b495578000050
*4b010217031400020008009240453a449e1f3e1b0c00000c23000011000d000000000001000000
*b4813c0000004547472d494e464f2f504b472d494e464f555405000304008b4955780000504b01
*0217031400020008009240453ab81cc8a746010000c304000014000d000000000001000000b481
*9b0c00004547472d494e464f2f534f55524345532e747874555405000304008b4955780000504b
*010217030a00020000009240453a305c0191260000002600000016000d000000000001000000b4
*81280e00004547472d494e464f2f746f705f6c6576656c2e747874555405000304008b49557800
*00504b010217031400020008009240453a57cacfec640200009e09000019000d00000000000100
*0000b481970e00004547472d494e464f2f656e7472795f706f696e74732e747874555405000304
*008b4955780000504b010217030a00020000009240453a9306d73201000000010000001d000d00
*0000000001000000b481471100004547472d494e464f2f646570656e64656e63795f6c696e6b73
*2e747874555405000304008b4955780000504b010217030a00020000009240453a9306d7320100
*00000100000011000d000000000001000000b481981100004547472d494e464f2f7a69702d7361
*6665555405000304008b4955780000504b010217031400020008000f42453a631429f1fc140000
*3b4800000b000d000000000001000000a481dd1100005f706b677574696c2e70795554050003ce
*028b4955780000504b01021703140002000800455459395c4fba45690000007e0000000f000d00
*0000000001000000b48117270000656173795f696e7374616c6c2e70795554050003824a034955
*780000504b010217031400020008006caa373afeac9b3a565800006141010010000d0000000000
*01000000b481c2270000706b675f7265736f75726365732e70795554050003cc967a4955780000
*504b010217030a00000000001742453a0000000000000000000000000b000d0000000000000010
*00fd415b8000007365747570746f6f6c732f5554050003de028b4955780000504b010217031400
*0200080045545939c1a946d9e0060000111700001a000d000000000001000000b4819980000073
*65747570746f6f6c732f617263686976655f7574696c2e70795554050003824a03495578000050
*4b0102170314000200080045545939b03f0decb50800004118000015000d000000000001000000
*b481c68700007365747570746f6f6c732f646570656e64732e70795554050003824a0349557800
*00504b0102170314000200080045545939cc40e5b7600300001709000018000d00000000000100
*0000b481c39000007365747570746f6f6c732f736974652d70617463682e70795554050003824a
*034955780000504b010217031400020008001242453a10c3b4dd570a0000001a000012000d0000
*00000000000000fd816e9400007365747570746f6f6c732f636c692e6578655554050003d3028b
*4955780000504b010217031400020008006caa373a1b7c493a761f00009973000012000d000000
*000001000000b4810a9f00007365747570746f6f6c732f646973742e70795554050003cc967a49
*55780000504b0102170314000200080072606f3978203cd821210000ad6c00001b000d00000000
*0001000000b481c5be00007365747570746f6f6c732f7061636b6167655f696e6465782e707955
*54050003081d1f4955780000504b010217031400020008001742453ab6147fba1e0b0000001c00
*0012000d000000000000000000fd8134e000007365747570746f6f6c732f6775692e6578655554
*050003de028b4955780000504b010217030a00000000004941453a000000000000000000000000
*11000d000000000000001000fd4197eb00007365747570746f6f6c732f74657374732f55540500
*035a018b4955780000504b0102170314000200080072606f390ec5c45a1f010000150200002500
*0d000000000001000000b481dbeb00007365747570746f6f6c732f74657374732f746573745f70
*61636b616765696e6465782e70795554050003081d1f4955780000504b01021703140002000800
*45545939269c6e71b10a00004f3000001c000d000000000001000000b48152ed00007365747570
*746f6f6c732f74657374732f5f5f696e69745f5f2e70795554050003824a034955780000504b01
*02170314000200080045545939614cddfc51120000ac4b000022000d000000000001000000b481
*52f800007365747570746f6f6c732f74657374732f746573745f7265736f75726365732e707955
*54050003824a034955780000504b01021703140002000800455459399435663c82040000ef0a00
*0016000d000000000001000000b481f80a01007365747570746f6f6c732f5f5f696e69745f5f2e
*70795554050003824a034955780000504b010217030a00000000004941453a0000000000000000
*0000000013000d000000000000001000fd41c30f01007365747570746f6f6c732f636f6d6d616e
*642f55540500035a018b4955780000504b01021703140002000800455459398f3ae7d013150000
*e44500001f000d000000000001000000b481091001007365747570746f6f6c732f636f6d6d616e
*642f62646973745f6567672e70795554050003824a034955780000504b01021703140002000800
*45545939e77b0c7da7080000701c00001e000d000000000001000000b4816e2501007365747570
*746f6f6c732f636f6d6d616e642f6275696c645f70792e70795554050003824a03495578000050
*4b0102170314000200080045545939e60fbd5864010000e30200001e000d000000000001000000
*b481662e01007365747570746f6f6c732f636f6d6d616e642f736176656f7074732e7079555405
*0003824a034955780000504b01021703140002000800455459397f27593604030000e90700001f
*000d000000000001000000b4811b3001007365747570746f6f6c732f636f6d6d616e642f626469
*73745f72706d2e70795554050003824a034955780000504b0102170314000200080045545939ba
*48756d3d1100002a3700001e000d000000000001000000b481713301007365747570746f6f6c73
*2f636f6d6d616e642f6567675f696e666f2e70795554050003824a034955780000504b01021703
*140002000800455459394eedf3090c0500008c0e000026000d000000000001000000b481ff4401
*007365747570746f6f6c732f636f6d6d616e642f696e7374616c6c5f6567675f696e666f2e7079
*5554050003824a034955780000504b010217031400020008004554593999ec28779e0000001501
*00001e000d000000000001000000b481644a01007365747570746f6f6c732f636f6d6d616e642f
*72656769737465722e70795554050003824a034955780000504b01021703140002000800455459
*3908a45d7a9e080000f91900001c000d000000000001000000b481534b01007365747570746f6f
*6c732f636f6d6d616e642f75706c6f61642e70795554050003824a034955780000504b01021703
*14000200080045545939a3f3b68866050000900f00001d000d000000000001000000b481405401
*007365747570746f6f6c732f636f6d6d616e642f696e7374616c6c2e70795554050003824a0349
*55780000504b01021703140002000800603f453ab2c623f10f4300009ef6000022000d00000000
*0001000000b481f65901007365747570746f6f6c732f636f6d6d616e642f656173795f696e7374
*616c6c2e70795554050003b4fe8a4955780000504b01021703140002000800455459390d094bbb
*92070000091500001b000d000000000001000000b4815a9d01007365747570746f6f6c732f636f
*6d6d616e642f73646973742e70795554050003824a034955780000504b01021703140002000800
*455459394f3f761e37010000730200001e000d000000000001000000b4813aa501007365747570
*746f6f6c732f636f6d6d616e642f5f5f696e69745f5f2e70795554050003824a03495578000050
*4b01021703140002000800455459398c488c3367030000b009000021000d000000000001000000
*b481c2a601007365747570746f6f6c732f636f6d6d616e642f696e7374616c6c5f6c69622e7079
*5554050003824a034955780000504b0102170314000200080045545939361d3c6dbb060000b514
*00001d000d000000000001000000b4817daa01007365747570746f6f6c732f636f6d6d616e642f
*646576656c6f702e70795554050003824a034955780000504b0102170314000200080045545939
*54894b4e8c0500005a1100001a000d000000000001000000b48188b101007365747570746f6f6c
*732f636f6d6d616e642f746573742e70795554050003824a034955780000504b01021703140002
*000800455459397e33f9e31c0c0000cf2c00001f000d000000000001000000b48161b701007365
*747570746f6f6c732f636f6d6d616e642f6275696c645f6578742e70795554050003824a034955
*780000504b01021703140002000800455459396fe6f56cb80200007507000025000d0000000000
*01000000b481cfc301007365747570746f6f6c732f636f6d6d616e642f696e7374616c6c5f7363
*72697074732e70795554050003824a034955780000504b01021703140002000800455459395282
*2fb0df050000aa1300001c000d000000000001000000b481dfc601007365747570746f6f6c732f
*636f6d6d616e642f7365746f70742e70795554050003824a034955780000504b01021703140002
*000800455459394fbf45adf90100000c06000023000d000000000001000000b4810dcd01007365
*747570746f6f6c732f636f6d6d616e642f62646973745f77696e696e73742e7079555405000382
*4a034955780000504b0102170314000200080045545939f6ad2b7aea020000c10700001c000d00
*0000000001000000b4815ccf01007365747570746f6f6c732f636f6d6d616e642f726f74617465
*2e70795554050003824a034955780000504b01021703140002000800455459395f4ee6ab4c0300
*00910900001b000d000000000001000000b48195d201007365747570746f6f6c732f636f6d6d61
*6e642f616c6961732e70795554050003824a034955780000504b01021703140002000800455459
*39dac13ca0a70100003f04000017000d000000000001000000b4812fd601007365747570746f6f
*6c732f657874656e73696f6e2e70795554050003824a034955780000504b010217031400020008
*00455459390ca882586d080000831d000015000d000000000001000000b48120d8010073657475
*70746f6f6c732f73616e64626f782e70795554050003824a034955780000504b0506000000002f
*002f00780f0000d5e001000000
newhex
*
rmfile ./misc/dependencies/setuptools-0.6c12dev.egg
adddir ./setuptools-0.6c14devdev.egg
adddir ./setuptools-0.6c14devdev.egg/EGG-INFO
addfile ./setuptools-0.6c14devdev.egg/EGG-INFO/PKG-INFO
hunk ./setuptools-0.6c14devdev.egg/EGG-INFO/PKG-INFO 1
+Metadata-Version: 1.0
+Name: setuptools
+Version: 0.6c14devdev
+Summary: Download, build, install, upgrade, and uninstall Python packages -- easily!
+Home-page: http://pypi.python.org/pypi/setuptools
+Author: Phillip J. Eby
+Author-email: distutils-sig@python.org
+License: PSF or ZPL
+Description: ===============================
+        Installing and Using Setuptools
+        ===============================
+        
+        .. contents:: **Table of Contents**
+        
+        
+        -------------------------
+        Installation Instructions
+        -------------------------
+        
+        Windows
+        =======
+        
+        Install setuptools using the provided ``.exe`` installer.  If you've previously
+        installed older versions of setuptools, please delete all ``setuptools*.egg``
+        and ``setuptools.pth`` files from your system's ``site-packages`` directory
+        (and any other ``sys.path`` directories) FIRST.
+        
+        If you are upgrading a previous version of setuptools that was installed using
+        an ``.exe`` installer, please be sure to also *uninstall that older version*
+        via your system's "Add/Remove Programs" feature, BEFORE installing the newer
+        version.
+        
+        Once installation is complete, you will find an ``easy_install.exe`` program in
+        your Python ``Scripts`` subdirectory.  Be sure to add this directory to your
+        ``PATH`` environment variable, if you haven't already done so.
+        
+        
+        RPM-Based Systems
+        =================
+        
+        Install setuptools using the provided source RPM.  The included ``.spec`` file
+        assumes you are installing using the default ``python`` executable, and is not
+        specific to a particular Python version.  The ``easy_install`` executable will
+        be installed to a system ``bin`` directory such as ``/usr/bin``.
+        
+        If you wish to install to a location other than the default Python
+        installation's default ``site-packages`` directory (and ``$prefix/bin`` for
+        scripts), please use the ``.egg``-based installation approach described in the
+        following section.
+        
+        
+        Cygwin, Mac OS X, Linux, Other
+        ==============================
+        
+        1. Download the appropriate egg for your version of Python (e.g.
+        ``setuptools-0.6c9-py2.4.egg``).  Do NOT rename it.
+        
+        2. Run it as if it were a shell script, e.g. ``sh setuptools-0.6c9-py2.4.egg``.
+        Setuptools will install itself using the matching version of Python (e.g.
+        ``python2.4``), and will place the ``easy_install`` executable in the
+        default location for installing Python scripts (as determined by the
+        standard distutils configuration files, or by the Python installation).
+        
+        If you want to install setuptools to somewhere other than ``site-packages`` or
+        your default distutils installation locations for libraries and scripts, you
+        may include EasyInstall command-line options such as ``--prefix``,
+        ``--install-dir``, and so on, following the ``.egg`` filename on the same
+        command line.  For example::
+        
+        sh setuptools-0.6c9-py2.4.egg --prefix=~
+        
+        You can use ``--help`` to get a full options list, but we recommend consulting
+        the `EasyInstall manual`_ for detailed instructions, especially `the section
+        on custom installation locations`_.
+        
+        .. _EasyInstall manual: http://peak.telecommunity.com/DevCenter/EasyInstall
+        .. _the section on custom installation locations: http://peak.telecommunity.com/DevCenter/EasyInstall#custom-installation-locations
+        
+        
+        Cygwin Note
+        -----------
+        
+        If you are trying to install setuptools for the **Windows** version of Python
+        (as opposed to the Cygwin version that lives in ``/usr/bin``), you must make
+        sure that an appropriate executable (``python2.3``, ``python2.4``, or
+        ``python2.5``) is on your **Cygwin** ``PATH`` when invoking the egg.  For
+        example, doing the following at a Cygwin bash prompt will install setuptools
+        for the **Windows** Python found at ``C:\\Python24``::
+        
+        ln -s /cygdrive/c/Python24/python.exe python2.4
+        PATH=.:$PATH sh setuptools-0.6c9-py2.4.egg
+        rm python2.4
+        
+        
+        Downloads
+        =========
+        
+        All setuptools downloads can be found at `the project's home page in the Python
+        Package Index`_.  Scroll to the very bottom of the page to find the links.
+        
+        .. _the project's home page in the Python Package Index: http://pypi.python.org/pypi/setuptools
+        
+        In addition to the PyPI downloads, the development version of ``setuptools``
+        is available from the `Python SVN sandbox`_, and in-development versions of the
+        `0.6 branch`_ are available as well.
+        
+        .. _0.6 branch: http://svn.python.org/projects/sandbox/branches/setuptools-0.6/#egg=setuptools-dev06
+        
+        .. _Python SVN sandbox: http://svn.python.org/projects/sandbox/trunk/setuptools/#egg=setuptools-dev
+        
+        --------------------------------
+        Using Setuptools and EasyInstall
+        --------------------------------
+        
+        Here are some of the available manuals, tutorials, and other resources for
+        learning about Setuptools, Python Eggs, and EasyInstall:
+        
+        * `The EasyInstall user's guide and reference manual`_
+        * `The setuptools Developer's Guide`_
+        * `The pkg_resources API reference`_
+        * `Package Compatibility Notes`_ (user-maintained)
+        * `The Internal Structure of Python Eggs`_
+        
+        Questions, comments, and bug reports should be directed to the `distutils-sig
+        mailing list`_.  If you have written (or know of) any tutorials, documentation,
+        plug-ins, or other resources for setuptools users, please let us know about
+        them there, so this reference list can be updated.  If you have working,
+        *tested* patches to correct problems or add features, you may submit them to
+        the `setuptools bug tracker`_.
+        
+        .. _setuptools bug tracker: http://bugs.python.org/setuptools/
+        .. _Package Compatibility Notes: http://peak.telecommunity.com/DevCenter/PackageNotes
+        .. _The Internal Structure of Python Eggs: http://peak.telecommunity.com/DevCenter/EggFormats
+        .. _The setuptools Developer's Guide: http://peak.telecommunity.com/DevCenter/setuptools
+        .. _The pkg_resources API reference: http://peak.telecommunity.com/DevCenter/PkgResources
+        .. _The EasyInstall user's guide and reference manual: http://peak.telecommunity.com/DevCenter/EasyInstall
+        .. _distutils-sig mailing list: http://mail.python.org/pipermail/distutils-sig/
+        
+        
+        -------
+        Credits
+        -------
+        
+        * The original design for the ``.egg`` format and the ``pkg_resources`` API was
+        co-created by Phillip Eby and Bob Ippolito.  Bob also implemented the first
+        version of ``pkg_resources``, and supplied the OS X operating system version
+        compatibility algorithm.
+        
+        * Ian Bicking implemented many early "creature comfort" features of
+        easy_install, including support for downloading via Sourceforge and
+        Subversion repositories.  Ian's comments on the Web-SIG about WSGI
+        application deployment also inspired the concept of "entry points" in eggs,
+        and he has given talks at PyCon and elsewhere to inform and educate the
+        community about eggs and setuptools.
+        
+        * Jim Fulton contributed time and effort to build automated tests of various
+        aspects of ``easy_install``, and supplied the doctests for the command-line
+        ``.exe`` wrappers on Windows.
+        
+        * Phillip J. Eby is the principal author and maintainer of setuptools, and
+        first proposed the idea of an importable binary distribution format for
+        Python application plug-ins.
+        
+        * Significant parts of the implementation of setuptools were funded by the Open
+        Source Applications Foundation, to provide a plug-in infrastructure for the
+        Chandler PIM application.  In addition, many OSAF staffers (such as Mike
+        "Code Bear" Taylor) contributed their time and stress as guinea pigs for the
+        use of eggs and setuptools, even before eggs were "cool".  (Thanks, guys!)
+        
+        
+Keywords: CPAN PyPI distutils eggs package management
+Platform: UNKNOWN
+Classifier: Development Status :: 3 - Alpha
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved :: Python Software Foundation License
+Classifier: License :: OSI Approved :: Zope Public License
+Classifier: Operating System :: OS Independent
+Classifier: Programming Language :: Python
+Classifier: Topic :: Software Development :: Libraries :: Python Modules
+Classifier: Topic :: System :: Archiving :: Packaging
+Classifier: Topic :: System :: Systems Administration
+Classifier: Topic :: Utilities
addfile ./setuptools-0.6c14devdev.egg/EGG-INFO/SOURCES.txt
hunk ./setuptools-0.6c14devdev.egg/EGG-INFO/SOURCES.txt 1
-
+README.txt
+easy_install.py
+pkg_resources.py
+setup.cfg
+setup.py
+setuptools/__init__.py
+setuptools/archive_util.py
+setuptools/depends.py
+setuptools/dist.py
+setuptools/extension.py
+setuptools/package_index.py
+setuptools/sandbox.py
+setuptools/site-patch.py
+setuptools.egg-info/PKG-INFO
+setuptools.egg-info/SOURCES.txt
+setuptools.egg-info/dependency_links.txt
+setuptools.egg-info/entry_points.txt
+setuptools.egg-info/top_level.txt
+setuptools.egg-info/zip-safe
+setuptools/command/__init__.py
+setuptools/command/alias.py
+setuptools/command/bdist_egg.py
+setuptools/command/bdist_rpm.py
+setuptools/command/bdist_wininst.py
+setuptools/command/build_ext.py
+setuptools/command/build_py.py
+setuptools/command/develop.py
+setuptools/command/easy_install.py
+setuptools/command/egg_info.py
+setuptools/command/install.py
+setuptools/command/install_egg_info.py
+setuptools/command/install_lib.py
+setuptools/command/install_scripts.py
+setuptools/command/register.py
+setuptools/command/rotate.py
+setuptools/command/saveopts.py
+setuptools/command/sdist.py
+setuptools/command/setopt.py
+setuptools/command/test.py
+setuptools/command/upload.py
+setuptools/tests/__init__.py
+setuptools/tests/test_packageindex.py
+setuptools/tests/test_resources.py
addfile ./setuptools-0.6c14devdev.egg/EGG-INFO/dependency_links.txt
hunk ./setuptools-0.6c14devdev.egg/EGG-INFO/dependency_links.txt 1
+
addfile ./setuptools-0.6c14devdev.egg/EGG-INFO/entry_points.txt
hunk ./setuptools-0.6c14devdev.egg/EGG-INFO/entry_points.txt 1
+[distutils.commands]
+bdist_rpm = setuptools.command.bdist_rpm:bdist_rpm
+rotate = setuptools.command.rotate:rotate
+develop = setuptools.command.develop:develop
+setopt = setuptools.command.setopt:setopt
+build_py = setuptools.command.build_py:build_py
+saveopts = setuptools.command.saveopts:saveopts
+egg_info = setuptools.command.egg_info:egg_info
+register = setuptools.command.register:register
+install_egg_info = setuptools.command.install_egg_info:install_egg_info
+alias = setuptools.command.alias:alias
+easy_install = setuptools.command.easy_install:easy_install
+install_scripts = setuptools.command.install_scripts:install_scripts
+bdist_wininst = setuptools.command.bdist_wininst:bdist_wininst
+bdist_egg = setuptools.command.bdist_egg:bdist_egg
+install = setuptools.command.install:install
+test = setuptools.command.test:test
+install_lib = setuptools.command.install_lib:install_lib
+build_ext = setuptools.command.build_ext:build_ext
+sdist = setuptools.command.sdist:sdist
+
+[egg_info.writers]
+dependency_links.txt = setuptools.command.egg_info:overwrite_arg
+requires.txt = setuptools.command.egg_info:write_requirements
+PKG-INFO = setuptools.command.egg_info:write_pkg_info
+eager_resources.txt = setuptools.command.egg_info:overwrite_arg
+top_level.txt = setuptools.command.egg_info:write_toplevel_names
+namespace_packages.txt = setuptools.command.egg_info:overwrite_arg
+entry_points.txt = setuptools.command.egg_info:write_entries
+depends.txt = setuptools.command.egg_info:warn_depends_obsolete
+
+[console_scripts]
+easy_install = setuptools.command.easy_install:main
+easy_install-2.6 = setuptools.command.easy_install:main
+
+[setuptools.file_finders]
+svn_cvs = setuptools.command.sdist:_default_revctrl
+
+[distutils.setup_keywords]
+dependency_links = setuptools.dist:assert_string_list
+entry_points = setuptools.dist:check_entry_points
+extras_require = setuptools.dist:check_extras
+test_runner = setuptools.dist:check_importable
+package_data = setuptools.dist:check_package_data
+install_requires = setuptools.dist:check_requirements
+include_package_data = setuptools.dist:assert_bool
+exclude_package_data = setuptools.dist:check_package_data
+namespace_packages = setuptools.dist:check_nsp
+test_suite = setuptools.dist:check_test_suite
+eager_resources = setuptools.dist:assert_string_list
+zip_safe = setuptools.dist:assert_bool
+test_loader = setuptools.dist:check_importable
+tests_require = setuptools.dist:check_requirements
+
+[setuptools.installation]
+eggsecutable = setuptools.command.easy_install:bootstrap
+
addfile ./setuptools-0.6c14devdev.egg/EGG-INFO/top_level.txt
hunk ./setuptools-0.6c14devdev.egg/EGG-INFO/top_level.txt 1
+easy_install
+pkg_resources
+setuptools
addfile ./setuptools-0.6c14devdev.egg/EGG-INFO/zip-safe
hunk ./setuptools-0.6c14devdev.egg/EGG-INFO/zip-safe 1
+
addfile ./setuptools-0.6c14devdev.egg/easy_install.py
hunk ./setuptools-0.6c14devdev.egg/easy_install.py 1
+"""Run the EasyInstall command"""
+
+if __name__ == '__main__':
+    from setuptools.command.easy_install import main
+    main()
addfile ./setuptools-0.6c14devdev.egg/easy_install.pyc
binary ./setuptools-0.6c14devdev.egg/easy_install.pyc
oldhex
*
newhex
*d1f20d0a291ef84b630000000000000000030000004000000073320000006400005a0000650100
*6401006a02006f1b00016402006403006b02006c03005a030001650300830000016e0100016404
*00532805000000731b00000052756e207468652045617379496e7374616c6c20636f6d6d616e64
*74080000005f5f6d61696e5f5f69ffffffff280100000074040000006d61696e4e280400000074
*070000005f5f646f635f5f74080000005f5f6e616d655f5f741f0000007365747570746f6f6c73
*2e636f6d6d616e642e656173795f696e7374616c6c520100000028000000002800000000280000
*000073250000006275696c645c62646973742e77696e33325c6567675c656173795f696e737461
*6c6c2e707974080000003c6d6f64756c653e01000000730600000006020d011001
addfile ./setuptools-0.6c14devdev.egg/pkg_resources.py
hunk ./setuptools-0.6c14devdev.egg/pkg_resources.py 1
+"""Package resource API
+--------------------
+
+A resource is a logical file contained within a package, or a logical
+subdirectory thereof.  The package resource API expects resource names
+to have their path parts separated with ``/``, *not* whatever the local
+path separator is.  Do not use os.path operations to manipulate resource
+names being passed into the API.
+
+The package resource API is designed to work with normal filesystem packages,
+.egg files, and unpacked .egg files.  It can also work in a limited way with
+.zip files and with custom PEP 302 loaders that support the ``get_data()``
+method.
+"""
+
+import sys, os, zipimport, time, re, imp, new
+
+try:
+    frozenset
+except NameError:
+    from sets import ImmutableSet as frozenset
+
+# capture these to bypass sandboxing
+from os import utime, rename, unlink, mkdir
+from os import open as os_open
+from os.path import isdir, split
+
+def _bypass_ensure_directory(name, mode=0777):
+    # Sandbox-bypassing version of ensure_directory()
+    dirname, filename = split(name)
+    if dirname and filename and not isdir(dirname):
+        _bypass_ensure_directory(dirname)
+        mkdir(dirname, mode)
+
+
+
+
+
+
+
+
+def get_supported_platform():
+    """Return this platform's maximum compatible version.
+
+    distutils.util.get_platform() normally reports the minimum version
+    of Mac OS X that would be required to *use* extensions produced by
+    distutils.  But what we want when checking compatibility is to know the
+    version of Mac OS X that we are *running*.  To allow usage of packages that
+    explicitly require a newer version of Mac OS X, we must also know the
+    current version of the OS.
+
+    If this condition occurs for any other platform with a version in its
+    platform strings, this function should be extended accordingly.
+    """
+    plat = get_build_platform(); m = macosVersionString.match(plat)
+    if m is not None and sys.platform == "darwin":
+        try:
+            plat = 'macosx-%s-%s' % ('.'.join(_macosx_vers()[:2]), m.group(3))
+        except ValueError:
+            pass    # not Mac OS X
+    return plat
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__all__ = [
+    # Basic resource access and distribution/entry point discovery
+    'require', 'run_script', 'get_provider',  'get_distribution',
+    'load_entry_point', 'get_entry_map', 'get_entry_info', 'iter_entry_points',
+    'resource_string', 'resource_stream', 'resource_filename',
+    'resource_listdir', 'resource_exists', 'resource_isdir',
+
+    # Environmental control
+    'declare_namespace', 'working_set', 'add_activation_listener',
+    'find_distributions', 'set_extraction_path', 'cleanup_resources',
+    'get_default_cache',
+
+    # Primary implementation classes
+    'Environment', 'WorkingSet', 'ResourceManager',
+    'Distribution', 'Requirement', 'EntryPoint',
+
+    # Exceptions
+    'ResolutionError','VersionConflict','DistributionNotFound','UnknownExtra',
+    'ExtractionError',
+
+    # Parsing functions and string utilities
+    'parse_requirements', 'parse_version', 'safe_name', 'safe_version',
+    'get_platform', 'compatible_platforms', 'yield_lines', 'split_sections',
+    'safe_extra', 'to_filename',
+
+    # filesystem utilities
+    'ensure_directory', 'normalize_path',
+
+    # Distribution "precedence" constants
+    'EGG_DIST', 'BINARY_DIST', 'SOURCE_DIST', 'CHECKOUT_DIST', 'DEVELOP_DIST',
+
+    # "Provider" interfaces, implementations, and registration/lookup APIs
+    'IMetadataProvider', 'IResourceProvider', 'FileMetadata',
+    'PathMetadata', 'EggMetadata', 'EmptyProvider', 'empty_provider',
+    'NullProvider', 'EggProvider', 'DefaultProvider', 'ZipProvider',
+    'register_finder', 'register_namespace_handler', 'register_loader_type',
+    'fixup_namespace_packages', 'get_importer',
+
+    # Deprecated/backward compatibility only
+    'run_main', 'AvailableDistributions',
+]
+class ResolutionError(Exception):
+    """Abstract base for dependency resolution errors"""
+    def __repr__(self):
+        return self.__class__.__name__+repr(self.args)
+
+class VersionConflict(ResolutionError):
+    """An already-installed version conflicts with the requested version"""
+
+class DistributionNotFound(ResolutionError):
+    """A requested distribution was not found"""
+
+class UnknownExtra(ResolutionError):
+    """Distribution doesn't have an "extra feature" of the given name"""
+
+_provider_factories = {}
+PY_MAJOR = sys.version[:3]
+EGG_DIST    = 3
+BINARY_DIST = 2
+SOURCE_DIST = 1
+CHECKOUT_DIST = 0
+DEVELOP_DIST = -1
+
+def register_loader_type(loader_type, provider_factory):
+    """Register `provider_factory` to make providers for `loader_type`
+
+    `loader_type` is the type or class of a PEP 302 ``module.__loader__``,
+    and `provider_factory` is a function that, passed a *module* object,
+    returns an ``IResourceProvider`` for that module.
+    """
+    _provider_factories[loader_type] = provider_factory
+
+def get_provider(moduleOrReq):
+    """Return an IResourceProvider for the named module or requirement"""
+    if isinstance(moduleOrReq,Requirement):
+        return working_set.find(moduleOrReq) or require(str(moduleOrReq))[0]
+    try:
+        module = sys.modules[moduleOrReq]
+    except KeyError:
+        __import__(moduleOrReq)
+        module = sys.modules[moduleOrReq]
+    loader = getattr(module, '__loader__', None)
+    return _find_adapter(_provider_factories, loader)(module)
+
+def _macosx_vers(_cache=[]):
+    if not _cache:
+        info = os.popen('/usr/bin/sw_vers').read().splitlines()
+        for line in info:
+            key, value = line.split(None, 1)
+            if key == 'ProductVersion:':
+                _cache.append(value.strip().split("."))
+                break
+        else:
+            raise ValueError, "What?!"
+    return _cache[0]
+
+def _macosx_arch(machine):
+    return {'PowerPC':'ppc', 'Power_Macintosh':'ppc'}.get(machine,machine)
+
+def get_build_platform():
+    """Return this platform's string for platform-specific distributions
+
+    XXX Currently this is the same as ``distutils.util.get_platform()``, but it
+    needs some hacks for Linux and Mac OS X.
+    """
+    from distutils.util import get_platform
+    plat = get_platform()
+    if sys.platform == "darwin" and not plat.startswith('macosx-'):
+        try:
+            version = _macosx_vers()
+            machine = os.uname()[4].replace(" ", "_")
+            return "macosx-%d.%d-%s" % (int(version[0]), int(version[1]),
+                _macosx_arch(machine))
+        except ValueError:
+            # if someone is running a non-Mac darwin system, this will fall
+            # through to the default implementation
+            pass
+    return plat
+
+macosVersionString = re.compile(r"macosx-(\d+)\.(\d+)-(.*)")
+darwinVersionString = re.compile(r"darwin-(\d+)\.(\d+)\.(\d+)-(.*)")
+get_platform = get_build_platform   # XXX backward compat
+
+def compatible_platforms(provided,required):
+    """Can code for the `provided` platform run on the `required` platform?
+
+    Returns true if either platform is ``None``, or the platforms are equal.
+
+    XXX Needs compatibility checks for Linux and other unixy OSes.
+    """
+    if provided is None or required is None or provided==required:
+        return True     # easy case
+
+    # Mac OS X special cases
+    reqMac = macosVersionString.match(required)
+    if reqMac:
+        provMac = macosVersionString.match(provided)
+
+        # is this a Mac package?
+        if not provMac:
+            # this is backwards compatibility for packages built before
+            # setuptools 0.6. All packages built after this point will
+            # use the new macosx designation.
+            provDarwin = darwinVersionString.match(provided)
+            if provDarwin:
+                dversion = int(provDarwin.group(1))
+                macosversion = "%s.%s" % (reqMac.group(1), reqMac.group(2))
+                if dversion == 7 and macosversion >= "10.3" or \
+                    dversion == 8 and macosversion >= "10.4":
+
+                    #import warnings
+                    #warnings.warn("Mac eggs should be rebuilt to "
+                    #    "use the macosx designation instead of darwin.",
+                    #    category=DeprecationWarning)
+                    return True
+            return False    # egg isn't macosx or legacy darwin
+
+        # are they the same major version and machine type?
+        if provMac.group(1) != reqMac.group(1) or \
+            provMac.group(3) != reqMac.group(3):
+            return False
+
+
+
+        # is the required OS major update >= the provided one?
+        if int(provMac.group(2)) > int(reqMac.group(2)):
+            return False
+
+        return True
+
+    # XXX Linux and other platforms' special cases should go here
+    return False
+
+
+def run_script(dist_spec, script_name):
+    """Locate distribution `dist_spec` and run its `script_name` script"""
+    ns = sys._getframe(1).f_globals
+    name = ns['__name__']
+    ns.clear()
+    ns['__name__'] = name
+    require(dist_spec)[0].run_script(script_name, ns)
+
+run_main = run_script   # backward compatibility
+
+def get_distribution(dist):
+    """Return a current distribution object for a Requirement or string"""
+    if isinstance(dist,basestring): dist = Requirement.parse(dist)
+    if isinstance(dist,Requirement): dist = get_provider(dist)
+    if not isinstance(dist,Distribution):
+        raise TypeError("Expected string, Requirement, or Distribution", dist)
+    return dist
+
+def load_entry_point(dist, group, name):
+    """Return `name` entry point of `group` for `dist` or raise ImportError"""
+    return get_distribution(dist).load_entry_point(group, name)
+
+def get_entry_map(dist, group=None):
+    """Return the entry point map for `group`, or the full entry map"""
+    return get_distribution(dist).get_entry_map(group)
+
+def get_entry_info(dist, group, name):
+    """Return the EntryPoint object for `group`+`name`, or ``None``"""
+    return get_distribution(dist).get_entry_info(group, name)
+
+
+class IMetadataProvider:
+
+    def has_metadata(name):
+        """Does the package's distribution contain the named metadata?"""
+
+    def get_metadata(name):
+        """The named metadata resource as a string"""
+
+    def get_metadata_lines(name):
+        """Yield named metadata resource as list of non-blank non-comment lines
+
+       Leading and trailing whitespace is stripped from each line, and lines
+       with ``#`` as the first non-blank character are omitted."""
+
+    def metadata_isdir(name):
+        """Is the named metadata a directory?  (like ``os.path.isdir()``)"""
+
+    def metadata_listdir(name):
+        """List of metadata names in the directory (like ``os.listdir()``)"""
+
+    def run_script(script_name, namespace):
+        """Execute the named script in the supplied namespace dictionary"""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+class IResourceProvider(IMetadataProvider):
+    """An object that provides access to package resources"""
+
+    def get_resource_filename(manager, resource_name):
+        """Return a true filesystem path for `resource_name`
+
+        `manager` must be an ``IResourceManager``"""
+
+    def get_resource_stream(manager, resource_name):
+        """Return a readable file-like object for `resource_name`
+
+        `manager` must be an ``IResourceManager``"""
+
+    def get_resource_string(manager, resource_name):
+        """Return a string containing the contents of `resource_name`
+
+        `manager` must be an ``IResourceManager``"""
+
+    def has_resource(resource_name):
+        """Does the package contain the named resource?"""
+
+    def resource_isdir(resource_name):
+        """Is the named resource a directory?  (like ``os.path.isdir()``)"""
+
+    def resource_listdir(resource_name):
+        """List of resource names in the directory (like ``os.listdir()``)"""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+class WorkingSet(object):
+    """A collection of active distributions on sys.path (or a similar list)"""
+
+    def __init__(self, entries=None):
+        """Create working set from list of path entries (default=sys.path)"""
+        self.entries = []
+        self.entry_keys = {}
+        self.by_key = {}
+        self.callbacks = []
+
+        if entries is None:
+            entries = sys.path
+
+        for entry in entries:
+            self.add_entry(entry)
+
+
+    def add_entry(self, entry):
+        """Add a path item to ``.entries``, finding any distributions on it
+
+        ``find_distributions(entry,False)`` is used to find distributions
+        corresponding to the path entry, and they are added.  `entry` is
+        always appended to ``.entries``, even if it is already present.
+        (This is because ``sys.path`` can contain the same value more than
+        once, and the ``.entries`` of the ``sys.path`` WorkingSet should always
+        equal ``sys.path``.)
+        """
+        self.entry_keys.setdefault(entry, [])
+        self.entries.append(entry)
+        for dist in find_distributions(entry, True):
+            self.add(dist, entry, False)
+
+
+    def __contains__(self,dist):
+        """True if `dist` is the active distribution for its project"""
+        return self.by_key.get(dist.key) == dist
+
+
+
+
+
+    def find(self, req):
+        """Find a distribution matching requirement `req`
+
+        If there is an active distribution for the requested project, this
+        returns it as long as it meets the version requirement specified by
+        `req`.  But, if there is an active distribution for the project and it
+        does *not* meet the `req` requirement, ``VersionConflict`` is raised.
+        If there is no active distribution for the requested project, ``None``
+        is returned.
+        """
+        dist = self.by_key.get(req.key)
+        if dist is not None and dist not in req:
+            raise VersionConflict(dist,req)     # XXX add more info
+        else:
+            return dist
+
+    def iter_entry_points(self, group, name=None):
+        """Yield entry point objects from `group` matching `name`
+
+        If `name` is None, yields all entry points in `group` from all
+        distributions in the working set, otherwise only ones matching
+        both `group` and `name` are yielded (in distribution order).
+        """
+        for dist in self:
+            entries = dist.get_entry_map(group)
+            if name is None:
+                for ep in entries.values():
+                    yield ep
+            elif name in entries:
+                yield entries[name]
+
+    def run_script(self, requires, script_name):
+        """Locate distribution for `requires` and run `script_name` script"""
+        ns = sys._getframe(1).f_globals
+        name = ns['__name__']
+        ns.clear()
+        ns['__name__'] = name
+        self.require(requires)[0].run_script(script_name, ns)
+
+
+
+    def __iter__(self):
+        """Yield distributions for non-duplicate projects in the working set
+
+        The yield order is the order in which the items' path entries were
+        added to the working set.
+        """
+        seen = {}
+        for item in self.entries:
+            for key in self.entry_keys[item]:
+                if key not in seen:
+                    seen[key]=1
+                    yield self.by_key[key]
+
+    def add(self, dist, entry=None, insert=True):
+        """Add `dist` to working set, associated with `entry`
+
+        If `entry` is unspecified, it defaults to the ``.location`` of `dist`.
+        On exit from this routine, `entry` is added to the end of the working
+        set's ``.entries`` (if it wasn't already present).
+
+        `dist` is only added to the working set if it's for a project that
+        doesn't already have a distribution in the set.  If it's added, any
+        callbacks registered with the ``subscribe()`` method will be called.
+        """
+        if insert:
+            dist.insert_on(self.entries, entry)
+
+        if entry is None:
+            entry = dist.location
+        keys = self.entry_keys.setdefault(entry,[])
+        keys2 = self.entry_keys.setdefault(dist.location,[])
+        if dist.key in self.by_key:
+            return      # ignore hidden distros
+
+        self.by_key[dist.key] = dist
+        if dist.key not in keys:
+            keys.append(dist.key)
+        if dist.key not in keys2:
+            keys2.append(dist.key)
+        self._added_new(dist)
+
+    def resolve(self, requirements, env=None, installer=None):
+        """List all distributions needed to (recursively) meet `requirements`
+
+        `requirements` must be a sequence of ``Requirement`` objects.  `env`,
+        if supplied, should be an ``Environment`` instance.  If
+        not supplied, it defaults to all distributions available within any
+        entry or distribution in the working set.  `installer`, if supplied,
+        will be invoked with each requirement that cannot be met by an
+        already-installed distribution; it should return a ``Distribution`` or
+        ``None``.
+        """
+
+        requirements = list(requirements)[::-1]  # set up the stack
+        processed = {}  # set of processed requirements
+        best = {}  # key -> dist
+        to_activate = []
+
+        while requirements:
+            req = requirements.pop(0)   # process dependencies breadth-first
+            if req in processed:
+                # Ignore cyclic or redundant dependencies
+                continue
+            dist = best.get(req.key)
+            if dist is None:
+                # Find the best distribution and add it to the map
+                dist = self.by_key.get(req.key)
+                if dist is None:
+                    if env is None:
+                        env = Environment(self.entries)
+                    dist = best[req.key] = env.best_match(req, self, installer)
+                    if dist is None:
+                        raise DistributionNotFound(req)  # XXX put more info here
+                to_activate.append(dist)
+            if dist not in req:
+                # Oops, the "best" so far conflicts with a dependency
+                raise VersionConflict(dist,req) # XXX put more info here
+            requirements.extend(dist.requires(req.extras)[::-1])
+            processed[req] = True
+
+        return to_activate    # return list of distros to activate
+
+    def find_plugins(self,
+        plugin_env, full_env=None, installer=None, fallback=True
+    ):
+        """Find all activatable distributions in `plugin_env`
+
+        Example usage::
+
+            distributions, errors = working_set.find_plugins(
+                Environment(plugin_dirlist)
+            )
+            map(working_set.add, distributions)  # add plugins+libs to sys.path
+            print "Couldn't load", errors        # display errors
+
+        The `plugin_env` should be an ``Environment`` instance that contains
+        only distributions that are in the project's "plugin directory" or
+        directories. The `full_env`, if supplied, should be an ``Environment``
+        contains all currently-available distributions.  If `full_env` is not
+        supplied, one is created automatically from the ``WorkingSet`` this
+        method is called on, which will typically mean that every directory on
+        ``sys.path`` will be scanned for distributions.
+
+        `installer` is a standard installer callback as used by the
+        ``resolve()`` method. The `fallback` flag indicates whether we should
+        attempt to resolve older versions of a plugin if the newest version
+        cannot be resolved.
+
+        This method returns a 2-tuple: (`distributions`, `error_info`), where
+        `distributions` is a list of the distributions found in `plugin_env`
+        that were loadable, along with any other distributions that are needed
+        to resolve their dependencies.  `error_info` is a dictionary mapping
+        unloadable plugin distributions to an exception instance describing the
+        error that occurred. Usually this will be a ``DistributionNotFound`` or
+        ``VersionConflict`` instance.
+        """
+
+        plugin_projects = list(plugin_env)
+        plugin_projects.sort()  # scan project names in alphabetic order
+
+        error_info = {}
+        distributions = {}
+
+        if full_env is None:
+            env = Environment(self.entries)
+            env += plugin_env
+        else:
+            env = full_env + plugin_env
+
+        shadow_set = self.__class__([])
+        map(shadow_set.add, self)   # put all our entries in shadow_set
+
+        for project_name in plugin_projects:
+
+            for dist in plugin_env[project_name]:
+
+                req = [dist.as_requirement()]
+
+                try:
+                    resolvees = shadow_set.resolve(req, env, installer)
+
+                except ResolutionError,v:
+                    error_info[dist] = v    # save error info
+                    if fallback:
+                        continue    # try the next older version of project
+                    else:
+                        break       # give up on this project, keep going
+
+                else:
+                    map(shadow_set.add, resolvees)
+                    distributions.update(dict.fromkeys(resolvees))
+
+                    # success, no need to try any more versions of this project
+                    break
+
+        distributions = list(distributions)
+        distributions.sort()
+
+        return distributions, error_info
+
+
+
+
+
+    def require(self, *requirements):
+        """Ensure that distributions matching `requirements` are activated
+
+        `requirements` must be a string or a (possibly-nested) sequence
+        thereof, specifying the distributions and versions required.  The
+        return value is a sequence of the distributions that needed to be
+        activated to fulfill the requirements; all relevant distributions are
+        included, even if they were already activated in this working set.
+        """
+
+        needed = self.resolve(parse_requirements(requirements))
+
+        for dist in needed:
+            self.add(dist)
+
+        return needed
+
+
+    def subscribe(self, callback):
+        """Invoke `callback` for all distributions (including existing ones)"""
+        if callback in self.callbacks:
+            return
+        self.callbacks.append(callback)
+        for dist in self:
+            callback(dist)
+
+
+    def _added_new(self, dist):
+        for callback in self.callbacks:
+            callback(dist)
+
+
+
+
+
+
+
+
+
+
+
+class Environment(object):
+    """Searchable snapshot of distributions on a search path"""
+
+    def __init__(self, search_path=None, platform=get_supported_platform(), python=PY_MAJOR):
+        """Snapshot distributions available on a search path
+
+        Any distributions found on `search_path` are added to the environment.
+        `search_path` should be a sequence of ``sys.path`` items.  If not
+        supplied, ``sys.path`` is used.
+
+        `platform` is an optional string specifying the name of the platform
+        that platform-specific distributions must be compatible with.  If
+        unspecified, it defaults to the current platform.  `python` is an
+        optional string naming the desired version of Python (e.g. ``'2.4'``);
+        it defaults to the current version.
+
+        You may explicitly set `platform` (and/or `python`) to ``None`` if you
+        wish to map *all* distributions, not just those compatible with the
+        running platform or Python version.
+        """
+        self._distmap = {}
+        self._cache = {}
+        self.platform = platform
+        self.python = python
+        self.scan(search_path)
+
+    def can_add(self, dist):
+        """Is distribution `dist` acceptable for this environment?
+
+        The distribution must match the platform and python version
+        requirements specified when this environment was created, or False
+        is returned.
+        """
+        return (self.python is None or dist.py_version is None
+            or dist.py_version==self.python) \
+           and compatible_platforms(dist.platform,self.platform)
+
+    def remove(self, dist):
+        """Remove `dist` from the environment"""
+        self._distmap[dist.key].remove(dist)
+
+    def scan(self, search_path=None):
+        """Scan `search_path` for distributions usable in this environment
+
+        Any distributions found are added to the environment.
+        `search_path` should be a sequence of ``sys.path`` items.  If not
+        supplied, ``sys.path`` is used.  Only distributions conforming to
+        the platform/python version defined at initialization are added.
+        """
+        if search_path is None:
+            search_path = sys.path
+
+        for item in search_path:
+            for dist in find_distributions(item):
+                self.add(dist)
+
+    def __getitem__(self,project_name):
+        """Return a newest-to-oldest list of distributions for `project_name`
+        """
+        try:
+            return self._cache[project_name]
+        except KeyError:
+            project_name = project_name.lower()
+            if project_name not in self._distmap:
+                return []
+
+        if project_name not in self._cache:
+            dists = self._cache[project_name] = self._distmap[project_name]
+            _sort_dists(dists)
+
+        return self._cache[project_name]
+
+    def add(self,dist):
+        """Add `dist` if we ``can_add()`` it and it isn't already added"""
+        if self.can_add(dist) and dist.has_version():
+            dists = self._distmap.setdefault(dist.key,[])
+            if dist not in dists:
+                dists.append(dist)
+                if dist.key in self._cache:
+                    _sort_dists(self._cache[dist.key])
+
+
+    def best_match(self, req, working_set, installer=None):
+        """Find distribution best matching `req` and usable on `working_set`
+
+        This calls the ``find(req)`` method of the `working_set` to see if a
+        suitable distribution is already active.  (This may raise
+        ``VersionConflict`` if an unsuitable version of the project is already
+        active in the specified `working_set`.)  If a suitable distribution
+        isn't active, this method returns the newest distribution in the
+        environment that meets the ``Requirement`` in `req`.  If no suitable
+        distribution is found, and `installer` is supplied, then the result of
+        calling the environment's ``obtain(req, installer)`` method will be
+        returned.
+        """
+        dist = working_set.find(req)
+        if dist is not None:
+            return dist
+        for dist in self[req.key]:
+            if dist in req:
+                return dist
+        return self.obtain(req, installer) # try and download/install
+
+    def obtain(self, requirement, installer=None):
+        """Obtain a distribution matching `requirement` (e.g. via download)
+
+        Obtain a distro that matches requirement (e.g. via download).  In the
+        base ``Environment`` class, this routine just returns
+        ``installer(requirement)``, unless `installer` is None, in which case
+        None is returned instead.  This method is a hook that allows subclasses
+        to attempt other ways of obtaining a distribution before falling back
+        to the `installer` argument."""
+        if installer is not None:
+            return installer(requirement)
+
+    def __iter__(self):
+        """Yield the unique project names of the available distributions"""
+        for key in self._distmap.keys():
+            if self[key]: yield key
+
+
+
+
+    def __iadd__(self, other):
+        """In-place addition of a distribution or environment"""
+        if isinstance(other,Distribution):
+            self.add(other)
+        elif isinstance(other,Environment):
+            for project in other:
+                for dist in other[project]:
+                    self.add(dist)
+        else:
+            raise TypeError("Can't add %r to environment" % (other,))
+        return self
+
+    def __add__(self, other):
+        """Add an environment or distribution to an environment"""
+        new = self.__class__([], platform=None, python=None)
+        for env in self, other:
+            new += env
+        return new
+
+
+AvailableDistributions = Environment    # XXX backward compatibility
+
+
+class ExtractionError(RuntimeError):
+    """An error occurred extracting a resource
+
+    The following attributes are available from instances of this exception:
+
+    manager
+        The resource manager that raised this exception
+
+    cache_path
+        The base directory for resource extraction
+
+    original_error
+        The exception instance that caused extraction to fail
+    """
+
+
+
+
+class ResourceManager:
+    """Manage resource extraction and packages"""
+    extraction_path = None
+
+    def __init__(self):
+        self.cached_files = {}
+
+    def resource_exists(self, package_or_requirement, resource_name):
+        """Does the named resource exist?"""
+        return get_provider(package_or_requirement).has_resource(resource_name)
+
+    def resource_isdir(self, package_or_requirement, resource_name):
+        """Is the named resource an existing directory?"""
+        return get_provider(package_or_requirement).resource_isdir(
+            resource_name
+        )
+
+    def resource_filename(self, package_or_requirement, resource_name):
+        """Return a true filesystem path for specified resource"""
+        return get_provider(package_or_requirement).get_resource_filename(
+            self, resource_name
+        )
+
+    def resource_stream(self, package_or_requirement, resource_name):
+        """Return a readable file-like object for specified resource"""
+        return get_provider(package_or_requirement).get_resource_stream(
+            self, resource_name
+        )
+
+    def resource_string(self, package_or_requirement, resource_name):
+        """Return specified resource as a string"""
+        return get_provider(package_or_requirement).get_resource_string(
+            self, resource_name
+        )
+
+    def resource_listdir(self, package_or_requirement, resource_name):
+        """List the contents of the named resource directory"""
+        return get_provider(package_or_requirement).resource_listdir(
+            resource_name
+        )
+
+    def extraction_error(self):
+        """Give an error message for problems extracting file(s)"""
+
+        old_exc = sys.exc_info()[1]
+        cache_path = self.extraction_path or get_default_cache()
+
+        err = ExtractionError("""Can't extract file(s) to egg cache
+
+The following error occurred while trying to extract file(s) to the Python egg
+cache:
+
+  %s
+
+The Python egg cache directory is currently set to:
+
+  %s
+
+Perhaps your account does not have write access to this directory?  You can
+change the cache directory by setting the PYTHON_EGG_CACHE environment
+variable to point to an accessible directory.
+"""         % (old_exc, cache_path)
+        )
+        err.manager        = self
+        err.cache_path     = cache_path
+        err.original_error = old_exc
+        raise err
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    def get_cache_path(self, archive_name, names=()):
+        """Return absolute location in cache for `archive_name` and `names`
+
+        The parent directory of the resulting path will be created if it does
+        not already exist.  `archive_name` should be the base filename of the
+        enclosing egg (which may not be the name of the enclosing zipfile!),
+        including its ".egg" extension.  `names`, if provided, should be a
+        sequence of path name parts "under" the egg's extraction location.
+
+        This method should only be called by resource providers that need to
+        obtain an extraction location, and only for names they intend to
+        extract, as it tracks the generated names for possible cleanup later.
+        """
+        extract_path = self.extraction_path or get_default_cache()
+        target_path = os.path.join(extract_path, archive_name+'-tmp', *names)
+        try:
+            _bypass_ensure_directory(target_path)
+        except:
+            self.extraction_error()
+
+        self.cached_files[target_path] = 1
+        return target_path
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    def postprocess(self, tempname, filename):
+        """Perform any platform-specific postprocessing of `tempname`
+
+        This is where Mac header rewrites should be done; other platforms don't
+        have anything special they should do.
+
+        Resource providers should call this method ONLY after successfully
+        extracting a compressed resource.  They must NOT call it on resources
+        that are already in the filesystem.
+
+        `tempname` is the current (temporary) name of the file, and `filename`
+        is the name it will be renamed to by the caller after this routine
+        returns.
+        """
+
+        if os.name == 'posix':
+            # Make the resource executable
+            mode = ((os.stat(tempname).st_mode) | 0555) & 07777
+            os.chmod(tempname, mode)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    def set_extraction_path(self, path):
+        """Set the base path where resources will be extracted to, if needed.
+
+        If you do not call this routine before any extractions take place, the
+        path defaults to the return value of ``get_default_cache()``.  (Which
+        is based on the ``PYTHON_EGG_CACHE`` environment variable, with various
+        platform-specific fallbacks.  See that routine's documentation for more
+        details.)
+
+        Resources are extracted to subdirectories of this path based upon
+        information given by the ``IResourceProvider``.  You may set this to a
+        temporary directory, but then you must call ``cleanup_resources()`` to
+        delete the extracted files when done.  There is no guarantee that
+        ``cleanup_resources()`` will be able to remove all extracted files.
+
+        (Note: you may not change the extraction path for a given resource
+        manager once resources have been extracted, unless you first call
+        ``cleanup_resources()``.)
+        """
+        if self.cached_files:
+            raise ValueError(
+                "Can't change extraction path, files already extracted"
+            )
+
+        self.extraction_path = path
+
+    def cleanup_resources(self, force=False):
+        """
+        Delete all extracted resource files and directories, returning a list
+        of the file and directory names that could not be successfully removed.
+        This function does not have any concurrency protection, so it should
+        generally only be called when the extraction path is a temporary
+        directory exclusive to a single process.  This method is not
+        automatically called; you must call it explicitly or register it as an
+        ``atexit`` function if you wish to ensure cleanup of a temporary
+        directory used for extractions.
+        """
+        # XXX
+
+
+
+def get_default_cache():
+    """Determine the default cache location
+
+    This returns the ``PYTHON_EGG_CACHE`` environment variable, if set.
+    Otherwise, on Windows, it returns a "Python-Eggs" subdirectory of the
+    "Application Data" directory.  On all other systems, it's "~/.python-eggs".
+    """
+    try:
+        return os.environ['PYTHON_EGG_CACHE']
+    except KeyError:
+        pass
+
+    if os.name!='nt':
+        return os.path.expanduser('~/.python-eggs')
+
+    app_data = 'Application Data'   # XXX this may be locale-specific!
+    app_homes = [
+        (('APPDATA',), None),       # best option, should be locale-safe
+        (('USERPROFILE',), app_data),
+        (('HOMEDRIVE','HOMEPATH'), app_data),
+        (('HOMEPATH',), app_data),
+        (('HOME',), None),
+        (('WINDIR',), app_data),    # 95/98/ME
+    ]
+
+    for keys, subdir in app_homes:
+        dirname = ''
+        for key in keys:
+            if key in os.environ:
+                dirname = os.path.join(dirname, os.environ[key])
+            else:
+                break
+        else:
+            if subdir:
+                dirname = os.path.join(dirname,subdir)
+            return os.path.join(dirname, 'Python-Eggs')
+    else:
+        raise RuntimeError(
+            "Please set the PYTHON_EGG_CACHE enviroment variable"
+        )
+
+def safe_name(name):
+    """Convert an arbitrary string to a standard distribution name
+
+    Any runs of non-alphanumeric/. characters are replaced with a single '-'.
+    """
+    return re.sub('[^A-Za-z0-9.]+', '-', name)
+
+
+def safe_version(version):
+    """Convert an arbitrary string to a standard version string
+
+    Spaces become dots, and all other non-alphanumeric characters become
+    dashes, with runs of multiple dashes condensed to a single dash.
+    """
+    version = version.replace(' ','.')
+    return re.sub('[^A-Za-z0-9.]+', '-', version)
+
+
+def safe_extra(extra):
+    """Convert an arbitrary string to a standard 'extra' name
+
+    Any runs of non-alphanumeric characters are replaced with a single '_',
+    and the result is always lowercased.
+    """
+    return re.sub('[^A-Za-z0-9.]+', '_', extra).lower()
+
+
+def to_filename(name):
+    """Convert a project or version name to its filename-escaped form
+
+    Any '-' characters are currently replaced with '_'.
+    """
+    return name.replace('-','_')
+
+
+
+
+
+
+
+
+class NullProvider:
+    """Try to implement resources and metadata for arbitrary PEP 302 loaders"""
+
+    egg_name = None
+    egg_info = None
+    loader = None
+
+    def __init__(self, module):
+        self.loader = getattr(module, '__loader__', None)
+        self.module_path = os.path.dirname(getattr(module, '__file__', ''))
+
+    def get_resource_filename(self, manager, resource_name):
+        return self._fn(self.module_path, resource_name)
+
+    def get_resource_stream(self, manager, resource_name):
+        return StringIO(self.get_resource_string(manager, resource_name))
+
+    def get_resource_string(self, manager, resource_name):
+        return self._get(self._fn(self.module_path, resource_name))
+
+    def has_resource(self, resource_name):
+        return self._has(self._fn(self.module_path, resource_name))
+
+    def has_metadata(self, name):
+        return self.egg_info and self._has(self._fn(self.egg_info,name))
+
+    def get_metadata(self, name):
+        if not self.egg_info:
+            return ""
+        return self._get(self._fn(self.egg_info,name))
+
+    def get_metadata_lines(self, name):
+        return yield_lines(self.get_metadata(name))
+
+    def resource_isdir(self,resource_name):
+        return self._isdir(self._fn(self.module_path, resource_name))
+
+    def metadata_isdir(self,name):
+        return self.egg_info and self._isdir(self._fn(self.egg_info,name))
+
+
+    def resource_listdir(self,resource_name):
+        return self._listdir(self._fn(self.module_path,resource_name))
+
+    def metadata_listdir(self,name):
+        if self.egg_info:
+            return self._listdir(self._fn(self.egg_info,name))
+        return []
+
+    def run_script(self,script_name,namespace):
+        script = 'scripts/'+script_name
+        if not self.has_metadata(script):
+            raise ResolutionError("No script named %r" % script_name)
+        script_text = self.get_metadata(script).replace('\r\n','\n')
+        script_text = script_text.replace('\r','\n')
+        script_filename = self._fn(self.egg_info,script)
+        namespace['__file__'] = script_filename
+        if os.path.exists(script_filename):
+            execfile(script_filename, namespace, namespace)
+        else:
+            from linecache import cache
+            cache[script_filename] = (
+                len(script_text), 0, script_text.split('\n'), script_filename
+            )
+            script_code = compile(script_text,script_filename,'exec')
+            exec script_code in namespace, namespace
+
+    def _has(self, path):
+        raise NotImplementedError(
+            "Can't perform this operation for unregistered loader type"
+        )
+
+    def _isdir(self, path):
+        raise NotImplementedError(
+            "Can't perform this operation for unregistered loader type"
+        )
+
+    def _listdir(self, path):
+        raise NotImplementedError(
+            "Can't perform this operation for unregistered loader type"
+        )
+
+    def _fn(self, base, resource_name):
+        if resource_name:
+            return os.path.join(base, *resource_name.split('/'))
+        return base
+
+    def _get(self, path):
+        if hasattr(self.loader, 'get_data'):
+            return self.loader.get_data(path)
+        raise NotImplementedError(
+            "Can't perform this operation for loaders without 'get_data()'"
+        )
+
+register_loader_type(object, NullProvider)
+
+
+class EggProvider(NullProvider):
+    """Provider based on a virtual filesystem"""
+
+    def __init__(self,module):
+        NullProvider.__init__(self,module)
+        self._setup_prefix()
+
+    def _setup_prefix(self):
+        # we assume here that our metadata may be nested inside a "basket"
+        # of multiple eggs; that's why we use module_path instead of .archive
+        path = self.module_path
+        old = None
+        while path!=old:
+            if path.lower().endswith('.egg'):
+                self.egg_name = os.path.basename(path)
+                self.egg_info = os.path.join(path, 'EGG-INFO')
+                self.egg_root = path
+                break
+            old = path
+            path, base = os.path.split(path)
+
+
+
+
+
+
+class DefaultProvider(EggProvider):
+    """Provides access to package resources in the filesystem"""
+
+    def _has(self, path):
+        return os.path.exists(path)
+
+    def _isdir(self,path):
+        return os.path.isdir(path)
+
+    def _listdir(self,path):
+        return os.listdir(path)
+
+    def get_resource_stream(self, manager, resource_name):
+        return open(self._fn(self.module_path, resource_name), 'rb')
+
+    def _get(self, path):
+        stream = open(path, 'rb')
+        try:
+            return stream.read()
+        finally:
+            stream.close()
+
+register_loader_type(type(None), DefaultProvider)
+
+
+class EmptyProvider(NullProvider):
+    """Provider that returns nothing for all requests"""
+
+    _isdir = _has = lambda self,path: False
+    _get          = lambda self,path: ''
+    _listdir      = lambda self,path: []
+    module_path   = None
+
+    def __init__(self):
+        pass
+
+empty_provider = EmptyProvider()
+
+
+
+
+class ZipProvider(EggProvider):
+    """Resource support for zips and eggs"""
+
+    eagers = None
+
+    def __init__(self, module):
+        EggProvider.__init__(self,module)
+        self.zipinfo = zipimport._zip_directory_cache[self.loader.archive]
+        self.zip_pre = self.loader.archive+os.sep
+
+    def _zipinfo_name(self, fspath):
+        # Convert a virtual filename (full path to file) into a zipfile subpath
+        # usable with the zipimport directory cache for our target archive
+        if fspath.startswith(self.zip_pre):
+            return fspath[len(self.zip_pre):]
+        raise AssertionError(
+            "%s is not a subpath of %s" % (fspath,self.zip_pre)
+        )
+
+    def _parts(self,zip_path):
+        # Convert a zipfile subpath into an egg-relative path part list
+        fspath = self.zip_pre+zip_path  # pseudo-fs path
+        if fspath.startswith(self.egg_root+os.sep):
+            return fspath[len(self.egg_root)+1:].split(os.sep)
+        raise AssertionError(
+            "%s is not a subpath of %s" % (fspath,self.egg_root)
+        )
+
+    def get_resource_filename(self, manager, resource_name):
+        if not self.egg_name:
+            raise NotImplementedError(
+                "resource_filename() only supported for .egg, not .zip"
+            )
+        # no need to lock for extraction, since we use temp names
+        zip_path = self._resource_to_zip(resource_name)
+        eagers = self._get_eager_resources()
+        if '/'.join(self._parts(zip_path)) in eagers:
+            for name in eagers:
+                self._extract_resource(manager, self._eager_to_zip(name))
+        return self._extract_resource(manager, zip_path)
+
+    def _extract_resource(self, manager, zip_path):
+
+        if zip_path in self._index():
+            for name in self._index()[zip_path]:
+                last = self._extract_resource(
+                    manager, os.path.join(zip_path, name)
+                )
+            return os.path.dirname(last)  # return the extracted directory name
+
+        zip_stat = self.zipinfo[zip_path]
+        t,d,size = zip_stat[5], zip_stat[6], zip_stat[3]
+        date_time = (
+            (d>>9)+1980, (d>>5)&0xF, d&0x1F,                      # ymd
+            (t&0xFFFF)>>11, (t>>5)&0x3F, (t&0x1F) * 2, 0, 0, -1   # hms, etc.
+        )
+        timestamp = time.mktime(date_time)
+
+        try:
+            real_path = manager.get_cache_path(
+                self.egg_name, self._parts(zip_path)
+            )
+
+            if os.path.isfile(real_path):
+                stat = os.stat(real_path)
+                if stat.st_size==size and stat.st_mtime==timestamp:
+                    # size and stamp match, don't bother extracting
+                    return real_path
+
+            outf, tmpnam = _mkstemp(".$extract", dir=os.path.dirname(real_path))
+            os.write(outf, self.loader.get_data(zip_path))
+            os.close(outf)
+            utime(tmpnam, (timestamp,timestamp))
+            manager.postprocess(tmpnam, real_path)
+
+            try:
+                rename(tmpnam, real_path)
+
+            except os.error:
+                if os.path.isfile(real_path):
+                    stat = os.stat(real_path)
+
+                    if stat.st_size==size and stat.st_mtime==timestamp:
+                        # size and stamp match, somebody did it just ahead of
+                        # us, so we're done
+                        return real_path
+                    elif os.name=='nt':     # Windows, del old file and retry
+                        unlink(real_path)
+                        rename(tmpnam, real_path)
+                        return real_path
+                raise
+
+        except os.error:
+            manager.extraction_error()  # report a user-friendly error
+
+        return real_path
+
+    def _get_eager_resources(self):
+        if self.eagers is None:
+            eagers = []
+            for name in ('native_libs.txt', 'eager_resources.txt'):
+                if self.has_metadata(name):
+                    eagers.extend(self.get_metadata_lines(name))
+            self.eagers = eagers
+        return self.eagers
+
+    def _index(self):
+        try:
+            return self._dirindex
+        except AttributeError:
+            ind = {}
+            for path in self.zipinfo:
+                parts = path.split(os.sep)
+                while parts:
+                    parent = os.sep.join(parts[:-1])
+                    if parent in ind:
+                        ind[parent].append(parts[-1])
+                        break
+                    else:
+                        ind[parent] = [parts.pop()]
+            self._dirindex = ind
+            return ind
+
+    def _has(self, fspath):
+        zip_path = self._zipinfo_name(fspath)
+        return zip_path in self.zipinfo or zip_path in self._index()
+
+    def _isdir(self,fspath):
+        return self._zipinfo_name(fspath) in self._index()
+
+    def _listdir(self,fspath):
+        return list(self._index().get(self._zipinfo_name(fspath), ()))
+
+    def _eager_to_zip(self,resource_name):
+        return self._zipinfo_name(self._fn(self.egg_root,resource_name))
+
+    def _resource_to_zip(self,resource_name):
+        return self._zipinfo_name(self._fn(self.module_path,resource_name))
+
+register_loader_type(zipimport.zipimporter, ZipProvider)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+class FileMetadata(EmptyProvider):
+    """Metadata handler for standalone PKG-INFO files
+
+    Usage::
+
+        metadata = FileMetadata("/path/to/PKG-INFO")
+
+    This provider rejects all data and metadata requests except for PKG-INFO,
+    which is treated as existing, and will be the contents of the file at
+    the provided location.
+    """
+
+    def __init__(self,path):
+        self.path = path
+
+    def has_metadata(self,name):
+        return name=='PKG-INFO'
+
+    def get_metadata(self,name):
+        if name=='PKG-INFO':
+            return open(self.path,'rU').read()
+        raise KeyError("No metadata except PKG-INFO is available")
+
+    def get_metadata_lines(self,name):
+        return yield_lines(self.get_metadata(name))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+class PathMetadata(DefaultProvider):
+    """Metadata provider for egg directories
+
+    Usage::
+
+        # Development eggs:
+
+        egg_info = "/path/to/PackageName.egg-info"
+        base_dir = os.path.dirname(egg_info)
+        metadata = PathMetadata(base_dir, egg_info)
+        dist_name = os.path.splitext(os.path.basename(egg_info))[0]
+        dist = Distribution(basedir,project_name=dist_name,metadata=metadata)
+
+        # Unpacked egg directories:
+
+        egg_path = "/path/to/PackageName-ver-pyver-etc.egg"
+        metadata = PathMetadata(egg_path, os.path.join(egg_path,'EGG-INFO'))
+        dist = Distribution.from_filename(egg_path, metadata=metadata)
+    """
+
+    def __init__(self, path, egg_info):
+        self.module_path = path
+        self.egg_info = egg_info
+
+
+class EggMetadata(ZipProvider):
+    """Metadata provider for .egg files"""
+
+    def __init__(self, importer):
+        """Create a metadata provider from a zipimporter"""
+
+        self.zipinfo = zipimport._zip_directory_cache[importer.archive]
+        self.zip_pre = importer.archive+os.sep
+        self.loader = importer
+        if importer.prefix:
+            self.module_path = os.path.join(importer.archive, importer.prefix)
+        else:
+            self.module_path = importer.archive
+        self._setup_prefix()
+
+
+class ImpWrapper:
+    """PEP 302 Importer that wraps Python's "normal" import algorithm"""
+
+    def __init__(self, path=None):
+        self.path = path
+
+    def find_module(self, fullname, path=None):
+        subname = fullname.split(".")[-1]
+        if subname != fullname and self.path is None:
+            return None
+        if self.path is None:
+            path = None
+        else:
+            path = [self.path]
+        try:
+            file, filename, etc = imp.find_module(subname, path)
+        except ImportError:
+            return None
+        return ImpLoader(file, filename, etc)
+
+
+class ImpLoader:
+    """PEP 302 Loader that wraps Python's "normal" import algorithm"""
+
+    def __init__(self, file, filename, etc):
+        self.file = file
+        self.filename = filename
+        self.etc = etc
+
+    def load_module(self, fullname):
+        try:
+            mod = imp.load_module(fullname, self.file, self.filename, self.etc)
+        finally:
+            if self.file: self.file.close()
+        # Note: we don't set __loader__ because we want the module to look
+        # normal; i.e. this is just a wrapper for standard import machinery
+        return mod
+
+
+
+
+def get_importer(path_item):
+    """Retrieve a PEP 302 "importer" for the given path item
+
+    If there is no importer, this returns a wrapper around the builtin import
+    machinery.  The returned importer is only cached if it was created by a
+    path hook.
+    """
+    try:
+        importer = sys.path_importer_cache[path_item]
+    except KeyError:
+        for hook in sys.path_hooks:
+            try:
+                importer = hook(path_item)
+            except ImportError:
+                pass
+            else:
+                break
+        else:
+            importer = None
+
+    sys.path_importer_cache.setdefault(path_item,importer)
+    if importer is None:
+        try:
+            importer = ImpWrapper(path_item)
+        except ImportError:
+            pass
+    return importer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+_distribution_finders = {}
+
+def register_finder(importer_type, distribution_finder):
+    """Register `distribution_finder` to find distributions in sys.path items
+
+    `importer_type` is the type or class of a PEP 302 "Importer" (sys.path item
+    handler), and `distribution_finder` is a callable that, passed a path
+    item and the importer instance, yields ``Distribution`` instances found on
+    that path item.  See ``pkg_resources.find_on_path`` for an example."""
+    _distribution_finders[importer_type] = distribution_finder
+
+
+def find_distributions(path_item, only=False):
+    """Yield distributions accessible via `path_item`"""
+    importer = get_importer(path_item)
+    finder = _find_adapter(_distribution_finders, importer)
+    return finder(importer, path_item, only)
+
+def find_in_zip(importer, path_item, only=False):
+    metadata = EggMetadata(importer)
+    if metadata.has_metadata('PKG-INFO'):
+        yield Distribution.from_filename(path_item, metadata=metadata)
+    if only:
+        return  # don't yield nested distros
+    for subitem in metadata.resource_listdir('/'):
+        if subitem.endswith('.egg'):
+            subpath = os.path.join(path_item, subitem)
+            for dist in find_in_zip(zipimport.zipimporter(subpath), subpath):
+                yield dist
+
+register_finder(zipimport.zipimporter, find_in_zip)
+
+def StringIO(*args, **kw):
+    """Thunk to load the real StringIO on demand"""
+    global StringIO
+    try:
+        from cStringIO import StringIO
+    except ImportError:
+        from StringIO import StringIO
+    return StringIO(*args,**kw)
+
+def find_nothing(importer, path_item, only=False):
+    return ()
+register_finder(object,find_nothing)
+
+def find_on_path(importer, path_item, only=False):
+    """Yield distributions accessible on a sys.path directory"""
+    path_item = _normalize_cached(path_item)
+
+    if os.path.isdir(path_item):
+        if path_item.lower().endswith('.egg'):
+            # unpacked egg
+            yield Distribution.from_filename(
+                path_item, metadata=PathMetadata(
+                    path_item, os.path.join(path_item,'EGG-INFO')
+                )
+            )
+        else:
+            # scan for .egg and .egg-info in directory
+            for entry in os.listdir(path_item):
+                lower = entry.lower()
+                if lower.endswith('.egg-info'):
+                    fullpath = os.path.join(path_item, entry)
+                    if os.path.isdir(fullpath):
+                        # egg-info directory, allow getting metadata
+                        metadata = PathMetadata(path_item, fullpath)
+                    else:
+                        metadata = FileMetadata(fullpath)
+                    yield Distribution.from_location(
+                        path_item,entry,metadata,precedence=DEVELOP_DIST
+                    )
+                elif not only and lower.endswith('.egg'):
+                    for dist in find_distributions(os.path.join(path_item, entry)):
+                        yield dist
+                elif not only and lower.endswith('.egg-link'):
+                    for line in file(os.path.join(path_item, entry)):
+                        if not line.strip(): continue
+                        for item in find_distributions(os.path.join(path_item,line.rstrip())):
+                            yield item
+                        break
+register_finder(ImpWrapper, find_on_path)
+
+_namespace_handlers = {}
+_namespace_packages = {}
+
+def register_namespace_handler(importer_type, namespace_handler):
+    """Register `namespace_handler` to declare namespace packages
+
+    `importer_type` is the type or class of a PEP 302 "Importer" (sys.path item
+    handler), and `namespace_handler` is a callable like this::
+
+        def namespace_handler(importer,path_entry,moduleName,module):
+            # return a path_entry to use for child packages
+
+    Namespace handlers are only called if the importer object has already
+    agreed that it can handle the relevant path item, and they should only
+    return a subpath if the module __path__ does not already contain an
+    equivalent subpath.  For an example namespace handler, see
+    ``pkg_resources.file_ns_handler``.
+    """
+    _namespace_handlers[importer_type] = namespace_handler
+
+def _handle_ns(packageName, path_item):
+    """Ensure that named package includes a subpath of path_item (if needed)"""
+    importer = get_importer(path_item)
+    if importer is None:
+        return None
+    loader = importer.find_module(packageName)
+    if loader is None:
+        return None
+    module = sys.modules.get(packageName)
+    if module is None:
+        module = sys.modules[packageName] = new.module(packageName)
+        module.__path__ = []; _set_parent_ns(packageName)
+    elif not hasattr(module,'__path__'):
+        raise TypeError("Not a package:", packageName)
+    handler = _find_adapter(_namespace_handlers, importer)
+    subpath = handler(importer,path_item,packageName,module)
+    if subpath is not None:
+        path = module.__path__; path.append(subpath)
+        loader.load_module(packageName); module.__path__ = path
+    return subpath
+
+def declare_namespace(packageName):
+    """Declare that package 'packageName' is a namespace package"""
+
+    imp.acquire_lock()
+    try:
+        if packageName in _namespace_packages:
+            return
+
+        path, parent = sys.path, None
+        if '.' in packageName:
+            parent = '.'.join(packageName.split('.')[:-1])
+            declare_namespace(parent)
+            __import__(parent)
+            try:
+                path = sys.modules[parent].__path__
+            except AttributeError:
+                raise TypeError("Not a package:", parent)
+
+        # Track what packages are namespaces, so when new path items are added,
+        # they can be updated
+        _namespace_packages.setdefault(parent,[]).append(packageName)
+        _namespace_packages.setdefault(packageName,[])
+
+        for path_item in path:
+            # Ensure all the parent's path items are reflected in the child,
+            # if they apply
+            _handle_ns(packageName, path_item)
+
+    finally:
+        imp.release_lock()
+
+def fixup_namespace_packages(path_item, parent=None):
+    """Ensure that previously-declared namespace packages include path_item"""
+    imp.acquire_lock()
+    try:
+        for package in _namespace_packages.get(parent,()):
+            subpath = _handle_ns(package, path_item)
+            if subpath: fixup_namespace_packages(subpath,package)
+    finally:
+        imp.release_lock()
+
+def file_ns_handler(importer, path_item, packageName, module):
+    """Compute an ns-package subpath for a filesystem or zipfile importer"""
+
+    subpath = os.path.join(path_item, packageName.split('.')[-1])
+    normalized = _normalize_cached(subpath)
+    for item in module.__path__:
+        if _normalize_cached(item)==normalized:
+            break
+    else:
+        # Only return the path if it's not already there
+        return subpath
+
+register_namespace_handler(ImpWrapper,file_ns_handler)
+register_namespace_handler(zipimport.zipimporter,file_ns_handler)
+
+
+def null_ns_handler(importer, path_item, packageName, module):
+    return None
+
+register_namespace_handler(object,null_ns_handler)
+
+
+def normalize_path(filename):
+    """Normalize a file/dir name for comparison purposes"""
+    return os.path.normcase(os.path.realpath(filename))
+
+def _normalize_cached(filename,_cache={}):
+    try:
+        return _cache[filename]
+    except KeyError:
+        _cache[filename] = result = normalize_path(filename)
+        return result
+
+def _set_parent_ns(packageName):
+    parts = packageName.split('.')
+    name = parts.pop()
+    if parts:
+        parent = '.'.join(parts)
+        setattr(sys.modules[parent], name, sys.modules[packageName])
+
+
+def yield_lines(strs):
+    """Yield non-empty/non-comment lines of a ``basestring`` or sequence"""
+    if isinstance(strs,basestring):
+        for s in strs.splitlines():
+            s = s.strip()
+            if s and not s.startswith('#'):     # skip blank lines/comments
+                yield s
+    else:
+        for ss in strs:
+            for s in yield_lines(ss):
+                yield s
+
+LINE_END = re.compile(r"\s*(#.*)?$").match         # whitespace and comment
+CONTINUE = re.compile(r"\s*\\\s*(#.*)?$").match    # line continuation
+DISTRO   = re.compile(r"\s*((\w|[-.])+)").match    # Distribution or extra
+VERSION  = re.compile(r"\s*(<=?|>=?|==|!=)\s*((\w|[-.])+)").match  # ver. info
+COMMA    = re.compile(r"\s*,").match               # comma between items
+OBRACKET = re.compile(r"\s*\[").match
+CBRACKET = re.compile(r"\s*\]").match
+MODULE   = re.compile(r"\w+(\.\w+)*$").match
+EGG_NAME = re.compile(
+    r"(?P<name>[^-]+)"
+    r"( -(?P<ver>[^-]+) (-py(?P<pyver>[^-]+) (-(?P<plat>.+))? )? )?",
+    re.VERBOSE | re.IGNORECASE
+).match
+
+component_re = re.compile(r'(\d+ | [a-z]+ | \.| -)', re.VERBOSE)
+replace = {'pre':'c', 'preview':'c','-':'final-','rc':'c','dev':'@'}.get
+
+def _parse_version_parts(s):
+    for part in component_re.split(s):
+        part = replace(part,part)
+        if not part or part=='.':
+            continue
+        if part[:1] in '0123456789':
+            yield part.zfill(8)    # pad for numeric comparison
+        else:
+            yield '*'+part
+
+    yield '*final'  # ensure that alpha/beta/candidate are before final
+
+def parse_version(s):
+    """Convert a version string to a chronologically-sortable key
+
+    This is a rough cross between distutils' StrictVersion and LooseVersion;
+    if you give it versions that would work with StrictVersion, then it behaves
+    the same; otherwise it acts like a slightly-smarter LooseVersion. It is
+    *possible* to create pathological version coding schemes that will fool
+    this parser, but they should be very rare in practice.
+
+    The returned value will be a tuple of strings.  Numeric portions of the
+    version are padded to 8 digits so they will compare numerically, but
+    without relying on how numbers compare relative to strings.  Dots are
+    dropped, but dashes are retained.  Trailing zeros between alpha segments
+    or dashes are suppressed, so that e.g. "2.4.0" is considered the same as
+    "2.4". Alphanumeric parts are lower-cased.
+
+    The algorithm assumes that strings like "-" and any alpha string that
+    alphabetically follows "final"  represents a "patch level".  So, "2.4-1"
+    is assumed to be a branch or patch of "2.4", and therefore "2.4.1" is
+    considered newer than "2.4-1", which in turn is newer than "2.4".
+
+    Strings like "a", "b", "c", "alpha", "beta", "candidate" and so on (that
+    come before "final" alphabetically) are assumed to be pre-release versions,
+    so that the version "2.4" is considered newer than "2.4a1".
+
+    Finally, to handle miscellaneous cases, the strings "pre", "preview", and
+    "rc" are treated as if they were "c", i.e. as though they were release
+    candidates, and therefore are not as new as a version string that does not
+    contain them, and "dev" is replaced with an '@' so that it sorts lower than
+    than any other pre-release tag.
+    """
+    parts = []
+    for part in _parse_version_parts(s.lower()):
+        if part.startswith('*'):
+            if part<'*final':   # remove '-' before a prerelease tag
+                while parts and parts[-1]=='*final-': parts.pop()
+            # remove trailing zeros from each series of numeric parts
+            while parts and parts[-1]=='00000000':
+                parts.pop()
+        parts.append(part)
+    return tuple(parts)
+
+class EntryPoint(object):
+    """Object representing an advertised importable object"""
+
+    def __init__(self, name, module_name, attrs=(), extras=(), dist=None):
+        if not MODULE(module_name):
+            raise ValueError("Invalid module name", module_name)
+        self.name = name
+        self.module_name = module_name
+        self.attrs = tuple(attrs)
+        self.extras = Requirement.parse(("x[%s]" % ','.join(extras))).extras
+        self.dist = dist
+
+    def __str__(self):
+        s = "%s = %s" % (self.name, self.module_name)
+        if self.attrs:
+            s += ':' + '.'.join(self.attrs)
+        if self.extras:
+            s += ' [%s]' % ','.join(self.extras)
+        return s
+
+    def __repr__(self):
+        return "EntryPoint.parse(%r)" % str(self)
+
+    def load(self, require=True, env=None, installer=None):
+        if require: self.require(env, installer)
+        entry = __import__(self.module_name, globals(),globals(), ['__name__'])
+        for attr in self.attrs:
+            try:
+                entry = getattr(entry,attr)
+            except AttributeError:
+                raise ImportError("%r has no %r attribute" % (entry,attr))
+        return entry
+
+    def require(self, env=None, installer=None):
+        if self.extras and not self.dist:
+            raise UnknownExtra("Can't require() without a distribution", self)
+        map(working_set.add,
+            working_set.resolve(self.dist.requires(self.extras),env,installer))
+
+
+
+    #@classmethod
+    def parse(cls, src, dist=None):
+        """Parse a single entry point from string `src`
+
+        Entry point syntax follows the form::
+
+            name = some.module:some.attr [extra1,extra2]
+
+        The entry name and module name are required, but the ``:attrs`` and
+        ``[extras]`` parts are optional
+        """
+        try:
+            attrs = extras = ()
+            name,value = src.split('=',1)
+            if '[' in value:
+                value,extras = value.split('[',1)
+                req = Requirement.parse("x["+extras)
+                if req.specs: raise ValueError
+                extras = req.extras
+            if ':' in value:
+                value,attrs = value.split(':',1)
+                if not MODULE(attrs.rstrip()):
+                    raise ValueError
+                attrs = attrs.rstrip().split('.')
+        except ValueError:
+            raise ValueError(
+                "EntryPoint must be in 'name=module:attrs [extras]' format",
+                src
+            )
+        else:
+            return cls(name.strip(), value.strip(), attrs, extras, dist)
+
+    parse = classmethod(parse)
+
+
+
+
+
+
+
+
+    #@classmethod
+    def parse_group(cls, group, lines, dist=None):
+        """Parse an entry point group"""
+        if not MODULE(group):
+            raise ValueError("Invalid group name", group)
+        this = {}
+        for line in yield_lines(lines):
+            ep = cls.parse(line, dist)
+            if ep.name in this:
+                raise ValueError("Duplicate entry point", group, ep.name)
+            this[ep.name]=ep
+        return this
+
+    parse_group = classmethod(parse_group)
+
+    #@classmethod
+    def parse_map(cls, data, dist=None):
+        """Parse a map of entry point groups"""
+        if isinstance(data,dict):
+            data = data.items()
+        else:
+            data = split_sections(data)
+        maps = {}
+        for group, lines in data:
+            if group is None:
+                if not lines:
+                    continue
+                raise ValueError("Entry points must be listed in groups")
+            group = group.strip()
+            if group in maps:
+                raise ValueError("Duplicate group name", group)
+            maps[group] = cls.parse_group(group, lines, dist)
+        return maps
+
+    parse_map = classmethod(parse_map)
+
+
+
+
+
+
+class Distribution(object):
+    """Wrap an actual or potential sys.path entry w/metadata"""
+    def __init__(self,
+        location=None, metadata=None, project_name=None, version=None,
+        py_version=PY_MAJOR, platform=None, precedence = EGG_DIST
+    ):
+        self.project_name = safe_name(project_name or 'Unknown')
+        if version is not None:
+            self._version = safe_version(version)
+        self.py_version = py_version
+        self.platform = platform
+        self.location = location
+        self.precedence = precedence
+        self._provider = metadata or empty_provider
+
+    #@classmethod
+    def from_location(cls,location,basename,metadata=None,**kw):
+        project_name, version, py_version, platform = [None]*4
+        basename, ext = os.path.splitext(basename)
+        if ext.lower() in (".egg",".egg-info"):
+            match = EGG_NAME(basename)
+            if match:
+                project_name, version, py_version, platform = match.group(
+                    'name','ver','pyver','plat'
+                )
+        return cls(
+            location, metadata, project_name=project_name, version=version,
+            py_version=py_version, platform=platform, **kw
+        )
+    from_location = classmethod(from_location)
+
+    hashcmp = property(
+        lambda self: (
+            getattr(self,'parsed_version',()), self.precedence, self.key,
+            -len(self.location or ''), self.location, self.py_version,
+            self.platform
+        )
+    )
+    def __cmp__(self, other): return cmp(self.hashcmp, other)
+    def __hash__(self): return hash(self.hashcmp)
+
+    # These properties have to be lazy so that we don't have to load any
+    # metadata until/unless it's actually needed.  (i.e., some distributions
+    # may not know their name or version without loading PKG-INFO)
+
+    #@property
+    def key(self):
+        try:
+            return self._key
+        except AttributeError:
+            self._key = key = self.project_name.lower()
+            return key
+    key = property(key)
+
+    #@property
+    def parsed_version(self):
+        try:
+            return self._parsed_version
+        except AttributeError:
+            self._parsed_version = pv = parse_version(self.version)
+            return pv
+
+    parsed_version = property(parsed_version)
+
+    #@property
+    def version(self):
+        try:
+            return self._version
+        except AttributeError:
+            for line in self._get_metadata('PKG-INFO'):
+                if line.lower().startswith('version:'):
+                    self._version = safe_version(line.split(':',1)[1].strip())
+                    return self._version
+            else:
+                raise ValueError(
+                    "Missing 'Version:' header and/or PKG-INFO file", self
+                )
+    version = property(version)
+
+
+
+
+    #@property
+    def _dep_map(self):
+        try:
+            return self.__dep_map
+        except AttributeError:
+            dm = self.__dep_map = {None: []}
+            for name in 'requires.txt', 'depends.txt':
+                for extra,reqs in split_sections(self._get_metadata(name)):
+                    if extra: extra = safe_extra(extra)
+                    dm.setdefault(extra,[]).extend(parse_requirements(reqs))
+            return dm
+    _dep_map = property(_dep_map)
+
+    def requires(self,extras=()):
+        """List of Requirements needed for this distro if `extras` are used"""
+        dm = self._dep_map
+        deps = []
+        deps.extend(dm.get(None,()))
+        for ext in extras:
+            try:
+                deps.extend(dm[safe_extra(ext)])
+            except KeyError:
+                raise UnknownExtra(
+                    "%s has no such extra feature %r" % (self, ext)
+                )
+        return deps
+
+    def _get_metadata(self,name):
+        if self.has_metadata(name):
+            for line in self.get_metadata_lines(name):
+                yield line
+
+    def activate(self,path=None):
+        """Ensure distribution is importable on `path` (default=sys.path)"""
+        if path is None: path = sys.path
+        self.insert_on(path)
+        if path is sys.path:
+            fixup_namespace_packages(self.location)
+            for pkg in self._get_metadata('namespace_packages.txt'):
+                if pkg in sys.modules: declare_namespace(pkg)
+
+    def egg_name(self):
+        """Return what this distribution's standard .egg filename should be"""
+        filename = "%s-%s-py%s" % (
+            to_filename(self.project_name), to_filename(self.version),
+            self.py_version or PY_MAJOR
+        )
+
+        if self.platform:
+            filename += '-'+self.platform
+        return filename
+
+    def __repr__(self):
+        if self.location:
+            return "%s (%s)" % (self,self.location)
+        else:
+            return str(self)
+
+    def __str__(self):
+        try: version = getattr(self,'version',None)
+        except ValueError: version = None
+        version = version or "[unknown version]"
+        return "%s %s" % (self.project_name,version)
+
+    def __getattr__(self,attr):
+        """Delegate all unrecognized public attributes to .metadata provider"""
+        if attr.startswith('_'):
+            raise AttributeError,attr
+        return getattr(self._provider, attr)
+
+    #@classmethod
+    def from_filename(cls,filename,metadata=None, **kw):
+        return cls.from_location(
+            _normalize_cached(filename), os.path.basename(filename), metadata,
+            **kw
+        )
+    from_filename = classmethod(from_filename)
+
+    def as_requirement(self):
+        """Return a ``Requirement`` that matches this distribution exactly"""
+        return Requirement.parse('%s==%s' % (self.project_name, self.version))
+
+    def load_entry_point(self, group, name):
+        """Return the `name` entry point of `group` or raise ImportError"""
+        ep = self.get_entry_info(group,name)
+        if ep is None:
+            raise ImportError("Entry point %r not found" % ((group,name),))
+        return ep.load()
+
+    def get_entry_map(self, group=None):
+        """Return the entry point map for `group`, or the full entry map"""
+        try:
+            ep_map = self._ep_map
+        except AttributeError:
+            ep_map = self._ep_map = EntryPoint.parse_map(
+                self._get_metadata('entry_points.txt'), self
+            )
+        if group is not None:
+            return ep_map.get(group,{})
+        return ep_map
+
+    def get_entry_info(self, group, name):
+        """Return the EntryPoint object for `group`+`name`, or ``None``"""
+        return self.get_entry_map(group).get(name)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    def insert_on(self, path, loc = None):
+        """Insert self.location in path before its nearest parent directory"""
+
+        loc = loc or self.location
+        if not loc:
+            return
+
+        if path is sys.path:
+            self.check_version_conflict()
+
+        nloc = _normalize_cached(loc)
+        bdir = os.path.dirname(nloc)
+        npath= map(_normalize_cached, path)
+
+        bp = None
+        for p, item in enumerate(npath):
+            if item==nloc:
+                break
+            elif item==bdir and self.precedence==EGG_DIST:
+                # if it's an .egg, give it precedence over its directory
+                path.insert(p, loc)
+                npath.insert(p, nloc)
+                break
+        else:
+            path.append(loc)
+            return
+
+        # p is the spot where we found or inserted loc; now remove duplicates
+        while 1:
+            try:
+                np = npath.index(nloc, p+1)
+            except ValueError:
+                break
+            else:
+                del npath[np], path[np]
+                p = np  # ha!
+
+        return
+
+
+
+    def check_version_conflict(self):
+        if self.key=='setuptools':
+            return      # ignore the inevitable setuptools self-conflicts  :(
+
+        nsp = dict.fromkeys(self._get_metadata('namespace_packages.txt'))
+        loc = normalize_path(self.location)
+        for modname in self._get_metadata('top_level.txt'):
+            if (modname not in sys.modules or modname in nsp
+                or modname in _namespace_packages
+            ):
+                continue
+
+            fn = getattr(sys.modules[modname], '__file__', None)
+            if fn and normalize_path(fn).startswith(loc):
+                continue
+            issue_warning(
+                "Module %s was already imported from %s, but %s is being added"
+                " to sys.path" % (modname, fn, self.location),
+            )
+
+    def has_version(self):
+        try:
+            self.version
+        except ValueError:
+            issue_warning("Unbuilt egg for "+repr(self))
+            return False
+        return True
+
+    def clone(self,**kw):
+        """Copy this distribution, substituting in any changed keyword args"""
+        for attr in (
+            'project_name', 'version', 'py_version', 'platform', 'location',
+            'precedence'
+        ):
+            kw.setdefault(attr, getattr(self,attr,None))
+        kw.setdefault('metadata', self._provider)
+        return self.__class__(**kw)
+
+
+
+
+    #@property
+    def extras(self):
+        return [dep for dep in self._dep_map if dep]
+    extras = property(extras)
+
+
+def issue_warning(*args,**kw):
+    level = 1
+    g = globals()
+    try:
+        # find the first stack frame that is *not* code in
+        # the pkg_resources module, to use for the warning
+        while sys._getframe(level).f_globals is g:
+            level += 1
+    except ValueError:
+        pass
+    from warnings import warn
+    warn(stacklevel = level+1, *args, **kw)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+def parse_requirements(strs):
+    """Yield ``Requirement`` objects for each specification in `strs`
+
+    `strs` must be an instance of ``basestring``, or a (possibly-nested)
+    iterable thereof.
+    """
+    # create a steppable iterator, so we can handle \-continuations
+    lines = iter(yield_lines(strs))
+
+    def scan_list(ITEM,TERMINATOR,line,p,groups,item_name):
+
+        items = []
+
+        while not TERMINATOR(line,p):
+            if CONTINUE(line,p):
+                try:
+                    line = lines.next(); p = 0
+                except StopIteration:
+                    raise ValueError(
+                        "\\ must not appear on the last nonblank line"
+                    )
+
+            match = ITEM(line,p)
+            if not match:
+                raise ValueError("Expected "+item_name+" in",line,"at",line[p:])
+
+            items.append(match.group(*groups))
+            p = match.end()
+
+            match = COMMA(line,p)
+            if match:
+                p = match.end() # skip the comma
+            elif not TERMINATOR(line,p):
+                raise ValueError(
+                    "Expected ',' or end-of-list in",line,"at",line[p:]
+                )
+
+        match = TERMINATOR(line,p)
+        if match: p = match.end()   # skip the terminator, if any
+        return line, p, items
+
+    for line in lines:
+        match = DISTRO(line)
+        if not match:
+            raise ValueError("Missing distribution spec", line)
+        project_name = match.group(1)
+        p = match.end()
+        extras = []
+
+        match = OBRACKET(line,p)
+        if match:
+            p = match.end()
+            line, p, extras = scan_list(
+                DISTRO, CBRACKET, line, p, (1,), "'extra' name"
+            )
+
+        line, p, specs = scan_list(VERSION,LINE_END,line,p,(1,2),"version spec")
+        specs = [(op,safe_version(val)) for op,val in specs]
+        yield Requirement(project_name, specs, extras)
+
+
+def _sort_dists(dists):
+    tmp = [(dist.hashcmp,dist) for dist in dists]
+    tmp.sort()
+    dists[::-1] = [d for hc,d in tmp]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+class Requirement:
+    def __init__(self, project_name, specs, extras):
+        """DO NOT CALL THIS UNDOCUMENTED METHOD; use Requirement.parse()!"""
+        self.unsafe_name, project_name = project_name, safe_name(project_name)
+        self.project_name, self.key = project_name, project_name.lower()
+        index = [(parse_version(v),state_machine[op],op,v) for op,v in specs]
+        index.sort()
+        self.specs = [(op,ver) for parsed,trans,op,ver in index]
+        self.index, self.extras = index, tuple(map(safe_extra,extras))
+        self.hashCmp = (
+            self.key, tuple([(op,parsed) for parsed,trans,op,ver in index]),
+            frozenset(self.extras)
+        )
+        self.__hash = hash(self.hashCmp)
+
+    def __str__(self):
+        specs = ','.join([''.join(s) for s in self.specs])
+        extras = ','.join(self.extras)
+        if extras: extras = '[%s]' % extras
+        return '%s%s%s' % (self.project_name, extras, specs)
+
+    def __eq__(self,other):
+        return isinstance(other,Requirement) and self.hashCmp==other.hashCmp
+
+    def __contains__(self,item):
+        if isinstance(item,Distribution):
+            if item.key <> self.key: return False
+            if self.index: item = item.parsed_version  # only get if we need it
+        elif isinstance(item,basestring):
+            item = parse_version(item)
+        last = None
+        for parsed,trans,op,ver in self.index:
+            action = trans[cmp(item,parsed)]
+            if action=='F':     return False
+            elif action=='T':   return True
+            elif action=='+':   last = True
+            elif action=='-' or last is None:   last = False
+        if last is None: last = True    # no rules encountered
+        return last
+
+
+    def __hash__(self):
+        return self.__hash
+
+    def __repr__(self): return "Requirement.parse(%r)" % str(self)
+
+    #@staticmethod
+    def parse(s):
+        reqs = list(parse_requirements(s))
+        if reqs:
+            if len(reqs)==1:
+                return reqs[0]
+            raise ValueError("Expected only one requirement", s)
+        raise ValueError("No requirements found", s)
+
+    parse = staticmethod(parse)
+
+state_machine = {
+    #       =><
+    '<' :  '--T',
+    '<=':  'T-T',
+    '>' :  'F+F',
+    '>=':  'T+F',
+    '==':  'T..',
+    '!=':  'F++',
+}
+
+
+def _get_mro(cls):
+    """Get an mro for a type or classic class"""
+    if not isinstance(cls,type):
+        class cls(cls,object): pass
+        return cls.__mro__[1:]
+    return cls.__mro__
+
+def _find_adapter(registry, ob):
+    """Return an adapter factory for `ob` from `registry`"""
+    for t in _get_mro(getattr(ob, '__class__', type(ob))):
+        if t in registry:
+            return registry[t]
+
+
+def ensure_directory(path):
+    """Ensure that the parent directory of `path` exists"""
+    dirname = os.path.dirname(path)
+    if not os.path.isdir(dirname):
+        os.makedirs(dirname)
+
+def split_sections(s):
+    """Split a string or iterable thereof into (section,content) pairs
+
+    Each ``section`` is a stripped version of the section header ("[section]")
+    and each ``content`` is a list of stripped lines excluding blank lines and
+    comment-only lines.  If there are any such lines before the first section
+    header, they're returned in a first ``section`` of ``None``.
+    """
+    section = None
+    content = []
+    for line in yield_lines(s):
+        if line.startswith("["):
+            if line.endswith("]"):
+                if section or content:
+                    yield section, content
+                section = line[1:-1].strip()
+                content = []
+            else:
+                raise ValueError("Invalid section heading", line)
+        else:
+            content.append(line)
+
+    # wrap up last segment
+    yield section, content
+
+def _mkstemp(*args,**kw):
+    from tempfile import mkstemp
+    old_open = os.open
+    try:
+        os.open = os_open   # temporarily bypass sandboxing
+        return mkstemp(*args,**kw)
+    finally:
+        os.open = old_open  # and then put it back
+
+
+# Set up global resource manager
+_manager = ResourceManager()
+def _initialize(g):
+    for name in dir(_manager):
+        if not name.startswith('_'):
+            g[name] = getattr(_manager, name)
+_initialize(globals())
+
+# Prepare the master working set and make the ``require()`` API available
+working_set = WorkingSet()
+try:
+    # Does the main program list any requirements?
+    from __main__ import __requires__
+except ImportError:
+    pass # No: just use the default working set based on sys.path
+else:
+    # Yes: ensure the requirements are met, by prefixing sys.path if necessary
+    try:
+        working_set.require(__requires__)
+    except VersionConflict:     # try it without defaults already on sys.path
+        working_set = WorkingSet([])    # by starting with an empty path
+        for dist in working_set.resolve(
+            parse_requirements(__requires__), Environment()
+        ):
+            working_set.add(dist)
+        for entry in sys.path:  # add any missing entries from sys.path
+            if entry not in working_set.entries:
+                working_set.add_entry(entry)
+        sys.path[:] = working_set.entries   # then copy back to sys.path
+
+require = working_set.require
+iter_entry_points = working_set.iter_entry_points
+add_activation_listener = working_set.subscribe
+run_script = working_set.run_script
+run_main = run_script   # backward compatibility
+# Activate all distributions already on sys.path, and ensure that
+# all distributions added to the working set in the future (e.g. by
+# calling ``require()``) will get activated as well.
+add_activation_listener(lambda dist: dist.activate())
+working_set.entries=[]; map(working_set.add_entry,sys.path) # match order
+
addfile ./setuptools-0.6c14devdev.egg/pkg_resources.pyc
binary ./setuptools-0.6c14devdev.egg/pkg_resources.pyc
oldhex
*
newhex
*d1f20d0a2e1ef84b630000000000000000500000004000000073a80800006400005a0000640100
*6402006b01005a01006401006402006b02005a02006401006402006b03005a0300640100640200
*6b04005a04006401006402006b05005a05006401006402006b06005a06006401006402006b0700
*5a070079080065080001576e2300046509006a0a006f1700010101016401006403006b0a006c0b
*005a0800016e020001586401006404006b02006c0c005a0c006c0d005a0d006c0e005a0e006c0f
*005a0f00016401006405006b02006c10005a1100016401006406006b12006c13005a13006c1400
*5a1400016407006408008401005a15006409008400005a1600640a00640b00640c00640d00640e
*00640f00641000641100641200641300641400641500641600641700641800641900641a00641b
*00641c00641d00641e00641f006420006421006422006423006424006425006426006427006428
*00642900642a00642b00642c00642d00642e00642f006430006431006432006433006434006435
*00643600643700643800643900643a00643b00643c00643d00643e00643f006440006441006442
*00644300644400644500644600644700644800644900644a00644b00644c006743005a17006425
*00651800660100644d00840000830000595a1900642600651900660100644e0084000083000059
*5a1a00642700651900660100644f00840000830000595a1b006428006519006601006450008400
*00830000595a1c006800005a1d00650100691e00645100205a1f006451005a20006452005a2100
*6453005a22006454005a23006401005a24006455008400005a25006456008400005a2600670000
*6457008401005a27006458008400005a28006459008400005a2900650500692a00645a00830100
*5a2b00650500692a00645b008301005a2c006529005a2d00645c008400005a2e00645d00840000
*5a2f00652f005a3000645e008400005a3100645f008400005a32006533006460008401005a3400
*6461008400005a3500643b00660000646200840000830000595a3600643c006536006601006463
*00840000830000595a3700642000653800660100646400840000830000595a3900641f00653800
*660100646500840000830000595a3a00653a005a3b00642900653c006601006466008400008300
*00595a3d00642100660000646700840000830000595a3e006468008400005a3f00646900840000
*5a4000646a008400005a4100646b008400005a4200646c008400005a4300644200660000646d00
*840000830000595a440065250065380065440083020001644300654400660100646e0084000083
*0000595a4500644400654500660100646f00840000830000595a46006525006547006533008301
*0065460083020001644000654400660100647000840000830000595a48006548008300005a4900
*644500654500660100647100840000830000595a4a00652500650300694b00654a008302000164
*3d00654800660100647200840000830000595a4c00643e00654600660100647300840000830000
*595a4d00643f00654a00660100647400840000830000595a4e0064750066000064760084000083
*0000595a4f00647700660000647800840000830000595a50006479008400005a51006800005a52
*00647a008400005a5300655400647b008401005a5500655400647c008401005a56006553006503
*00694b0065560083020001647d00840000615700655400647e008401005a580065530065380065
*580083020001655400647f008401005a5900655300654f00655900830200016800005a5a006800
*005a5b006480008400005a5c006481008400005a5d006482008400005a5e006533006483008401
*005a5f006484008400005a6000655c00654f0065600083020001655c00650300694b0065600083
*0200016485008400005a6100655c00653800656100830200016486008400005a62006800006487
*008401005a63006488008400005a64006489008400005a6500650500692a00648a008301006966
*005a6700650500692a00648b008301006966005a6800650500692a00648c008301006966005a69
*00650500692a00648d008301006966005a6a00650500692a00648e008301006966005a6b006505
*00692a00648f008301006966005a6c00650500692a006490008301006966005a6d00650500692a
*006491008301006966005a6e00650500692a00649200650500696f006505006970004283020069
*66005a7100650500692a00649300650500696f008302005a720068050064940064950036649400
*649600366497006498003664940064990036649a00649b00366973005a7400649c008400005a75
*00649d008400005a7600642400653800660100649e00840000830000595a770064220065380066
*0100649f00840000830000595a780064a0008400005a790064a1008400005a7a0064a200840000
*5a7b0064230066000064a300840000830000595a7c0068060064a40064a5003664a60064a70036
*64a80064a9003664aa0064ab003664ac0064ad003664ae0064af00365a7d0064b0008400005a7e
*0064b1008400005a7f0064b2008400005a800064b3008400005a810064b4008400005a8200653e
*008300005a830064b5008400005a8400658400658500830000830100016539008300005a860079
*140064010064b6006b87006c88005a880001576e1300046589006a0a006f0700010101016eaa00
*0158791100658600698a0065880083010001576e940004651a006a0a006f880001010101653900
*6700008301005a8600783000658600698b00657a00658800830100653a00830000830200445d13
*005a8c00658600698d00658c008301000171f30757783200650100698e00445d27005a8f00658f
*006586006990006a07006f110001658600699100658f00830100016e0100017114085765860069
*9000650100698e00286e02000158658600698a005a8a006586006992005a92006586006993005a
*9400658600692f005a2f00652f005a300065940064b700840000830100016700006586005f9000
*659500658600699100650100698e00830200016402005328b800000073590200005061636b6167
*65207265736f75726365204150490a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a4120
*7265736f757263652069732061206c6f676963616c2066696c6520636f6e7461696e6564207769
*7468696e2061207061636b6167652c206f722061206c6f676963616c0a7375626469726563746f
*72792074686572656f662e2020546865207061636b616765207265736f75726365204150492065
*787065637473207265736f75726365206e616d65730a746f206861766520746865697220706174
*682070617274732073657061726174656420776974682060602f60602c202a6e6f742a20776861
*746576657220746865206c6f63616c0a7061746820736570617261746f722069732e2020446f20
*6e6f7420757365206f732e70617468206f7065726174696f6e7320746f206d616e6970756c6174
*65207265736f757263650a6e616d6573206265696e672070617373656420696e746f2074686520
*4150492e0a0a546865207061636b616765207265736f7572636520415049206973206465736967
*6e656420746f20776f726b2077697468206e6f726d616c2066696c6573797374656d207061636b
*616765732c0a2e6567672066696c65732c20616e6420756e7061636b6564202e6567672066696c
*65732e202049742063616e20616c736f20776f726b20696e2061206c696d697465642077617920
*776974680a2e7a69702066696c657320616e64207769746820637573746f6d2050455020333032
*206c6f6164657273207468617420737570706f7274207468652060606765745f64617461282960
*600a6d6574686f642e0a69ffffffff4e2801000000740c000000496d6d757461626c6553657428
*0400000074050000007574696d65740600000072656e616d657406000000756e6c696e6b740500
*00006d6b646972280100000074040000006f70656e280200000074050000006973646972740500
*000073706c697469ff0100006302000000040000000300000043000000734d0000007400007c00
*008301005c02007d02007d03007c02006f3000017c03006f2900017401007c02008301000c6f1b
*00017402007c0200830100017403007c02007c0100830200016e0100016400005328010000004e
*28040000005207000000520600000074180000005f6279706173735f656e737572655f64697265
*63746f72795204000000280400000074040000006e616d6574040000006d6f6465740700000064
*69726e616d65740800000066696c656e616d6528000000002800000000733a000000433a5c7461
*686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b
*675f7265736f75726365732e707952080000001c0000007308000000000212011c010a01630000
*000002000000080000004300000073800000007400008300007d00007401006902007c00008301
*007d01007c01006406006a09006f5700017404006905006401006a02006f470001792d00640200
*640300690600740700830000640400208301007c0100690800640500830100660200167d000057
*717c00047409006a0a006f070001010101717c0001586e0100017c0000532807000000735a0200
*0052657475726e207468697320706c6174666f726d2773206d6178696d756d20636f6d70617469
*626c652076657273696f6e2e0a0a20202020646973747574696c732e7574696c2e6765745f706c
*6174666f726d2829206e6f726d616c6c79207265706f72747320746865206d696e696d756d2076
*657273696f6e0a202020206f66204d6163204f532058207468617420776f756c64206265207265
*71756972656420746f202a7573652a20657874656e73696f6e732070726f64756365642062790a
*20202020646973747574696c732e202042757420776861742077652077616e74207768656e2063
*6865636b696e6720636f6d7061746962696c69747920697320746f206b6e6f77207468650a2020
*202076657273696f6e206f66204d6163204f532058207468617420776520617265202a72756e6e
*696e672a2e2020546f20616c6c6f77207573616765206f66207061636b6167657320746861740a
*202020206578706c696369746c7920726571756972652061206e657765722076657273696f6e20
*6f66204d6163204f5320582c207765206d75737420616c736f206b6e6f77207468650a20202020
*63757272656e742076657273696f6e206f6620746865204f532e0a0a2020202049662074686973
*20636f6e646974696f6e206f636375727320666f7220616e79206f7468657220706c6174666f72
*6d207769746820612076657273696f6e20696e206974730a20202020706c6174666f726d207374
*72696e67732c20746869732066756e6374696f6e2073686f756c6420626520657874656e646564
*206163636f7264696e676c792e0a20202020740600000064617277696e730c0000006d61636f73
*782d25732d257374010000002e690200000069030000004e280a00000074120000006765745f62
*75696c645f706c6174666f726d74120000006d61636f7356657273696f6e537472696e67740500
*00006d6174636874040000004e6f6e6574030000007379737408000000706c6174666f726d7404
*0000006a6f696e740c0000005f6d61636f73785f76657273740500000067726f7570740a000000
*56616c75654572726f7228020000007404000000706c617474010000006d280000000028000000
*00733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465
*766465762e6567675c706b675f7265736f75726365732e707974160000006765745f737570706f
*727465645f706c6174666f726d2a0000007310000000000d09000f011d0103012d010e01090174
*0700000072657175697265740a00000072756e5f736372697074740c0000006765745f70726f76
*6964657274100000006765745f646973747269627574696f6e74100000006c6f61645f656e7472
*795f706f696e74740d0000006765745f656e7472795f6d6170740e0000006765745f656e747279
*5f696e666f7411000000697465725f656e7472795f706f696e7473740f0000007265736f757263
*655f737472696e67740f0000007265736f757263655f73747265616d74110000007265736f7572
*63655f66696c656e616d6574100000007265736f757263655f6c697374646972740f0000007265
*736f757263655f657869737473740e0000007265736f757263655f697364697274110000006465
*636c6172655f6e616d657370616365740b000000776f726b696e675f7365747417000000616464
*5f61637469766174696f6e5f6c697374656e6572741200000066696e645f646973747269627574
*696f6e7374130000007365745f65787472616374696f6e5f706174687411000000636c65616e75
*705f7265736f757263657374110000006765745f64656661756c745f6361636865740b00000045
*6e7669726f6e6d656e74740a000000576f726b696e67536574740f0000005265736f757263654d
*616e61676572740c000000446973747269627574696f6e740b000000526571756972656d656e74
*740a000000456e747279506f696e74740f0000005265736f6c7574696f6e4572726f72740f0000
*0056657273696f6e436f6e666c6963747414000000446973747269627574696f6e4e6f74466f75
*6e64740c000000556e6b6e6f776e4578747261740f00000045787472616374696f6e4572726f72
*741200000070617273655f726571756972656d656e7473740d00000070617273655f7665727369
*6f6e7409000000736166655f6e616d65740c000000736166655f76657273696f6e740c00000067
*65745f706c6174666f726d7414000000636f6d70617469626c655f706c6174666f726d73740b00
*00007969656c645f6c696e6573740e00000073706c69745f73656374696f6e73740a0000007361
*66655f6578747261740b000000746f5f66696c656e616d657410000000656e737572655f646972
*6563746f7279740e0000006e6f726d616c697a655f7061746874080000004547475f4449535474
*0b00000042494e4152595f44495354740b000000534f555243455f44495354740d000000434845
*434b4f55545f44495354740c000000444556454c4f505f444953547411000000494d6574616461
*746150726f76696465727411000000495265736f7572636550726f7669646572740c0000004669
*6c654d65746164617461740c000000506174684d65746164617461740b0000004567674d657461
*64617461740d000000456d70747950726f7669646572740e000000656d7074795f70726f766964
*6572740c0000004e756c6c50726f7669646572740b00000045676750726f7669646572740f0000
*0044656661756c7450726f7669646572740b0000005a697050726f7669646572740f0000007265
*6769737465725f66696e646572741a00000072656769737465725f6e616d6573706163655f6861
*6e646c6572741400000072656769737465725f6c6f616465725f74797065741800000066697875
*705f6e616d6573706163655f7061636b61676573740c0000006765745f696d706f727465727408
*00000072756e5f6d61696e7416000000417661696c61626c65446973747269627574696f6e7363
*0000000000000000010000004200000073170000006500005a01006400005a0200640100840000
*5a030052532802000000732e0000004162737472616374206261736520666f7220646570656e64
*656e6379207265736f6c7574696f6e206572726f72736301000000010000000300000043000000
*73170000007c00006900006901007402007c0000690300830100175328010000004e2804000000
*74090000005f5f636c6173735f5f74080000005f5f6e616d655f5f740400000072657072740400
*0000617267732801000000740400000073656c6628000000002800000000733a000000433a5c74
*61686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c70
*6b675f7265736f75726365732e707974080000005f5f726570725f5f7e00000073020000000001
*28040000005260000000740a0000005f5f6d6f64756c655f5f74070000005f5f646f635f5f5264
*000000280000000028000000002800000000733a000000433a5c7461686f652d6c6166735c7365
*747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f7572636573
*2e707952370000007c000000730400000006010601630000000000000000010000004200000073
*0e0000006500005a01006400005a0200525328010000007341000000416e20616c72656164792d
*696e7374616c6c65642076657273696f6e20636f6e666c69637473207769746820746865207265
*717565737465642076657273696f6e280300000052600000005265000000526600000028000000
*0028000000002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c
*732d302e366331346465766465762e6567675c706b675f7265736f75726365732e707952380000
*0081000000730200000006016300000000000000000100000042000000730e0000006500005a01
*006400005a02005253280100000073260000004120726571756573746564206469737472696275
*74696f6e20776173206e6f7420666f756e64280300000052600000005265000000526600000028
*0000000028000000002800000000733a000000433a5c7461686f652d6c6166735c736574757074
*6f6f6c732d302e366331346465766465762e6567675c706b675f7265736f75726365732e707952
*3900000084000000730200000006016300000000000000000100000042000000730e0000006500
*005a01006400005a020052532801000000733e000000446973747269627574696f6e20646f6573
*6e2774206861766520616e20226578747261206665617475726522206f66207468652067697665
*6e206e616d65280300000052600000005265000000526600000028000000002800000000280000
*0000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663313464
*65766465762e6567675c706b675f7265736f75726365732e7079523a0000008700000073020000
*000601690300000069020000006901000000690000000063020000000200000003000000430000
*00730e0000007c01007400007c00003c640100532802000000730f010000526567697374657220
*6070726f76696465725f666163746f72796020746f206d616b652070726f76696465727320666f
*7220606c6f616465725f74797065600a0a20202020606c6f616465725f74797065602069732074
*68652074797065206f7220636c617373206f66206120504550203330322060606d6f64756c652e
*5f5f6c6f616465725f5f60602c0a20202020616e64206070726f76696465725f666163746f7279
*6020697320612066756e6374696f6e20746861742c207061737365642061202a6d6f64756c652a
*206f626a6563742c0a2020202072657475726e7320616e206060495265736f7572636550726f76
*69646572606020666f722074686174206d6f64756c652e0a202020204e28010000007413000000
*5f70726f76696465725f666163746f726965732802000000740b0000006c6f616465725f747970
*65741000000070726f76696465725f666163746f727928000000002800000000733a000000433a
*5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e656767
*5c706b675f7265736f75726365732e7079525a0000009200000073020000000007630100000003
*000000070000004300000073980000007400007c00007401008302006f2500017402006903007c
*0000830100701400017404007405007c0000830100830100640100195301791100740600690700
*7c0000197d0100576e2a00047408006a0a006f1e00010101017409007c00008301000174060069
*07007c0000197d01006e02000158740a007c01006402006403008303007d0200740c00740d007c
*02008302007c0100830100532804000000733f00000052657475726e20616e20495265736f7572
*636550726f766964657220666f7220746865206e616d6564206d6f64756c65206f722072657175
*6972656d656e746900000000740a0000005f5f6c6f616465725f5f4e280e000000740a00000069
*73696e7374616e63655235000000522b000000740400000066696e64521c000000740300000073
*7472521300000074070000006d6f64756c657374080000004b65794572726f72740a0000005f5f
*696d706f72745f5f7407000000676574617474725212000000740d0000005f66696e645f616461
*7074657252670000002803000000740b0000006d6f64756c654f7252657174060000006d6f6475
*6c6574060000006c6f6164657228000000002800000000733a000000433a5c7461686f652d6c61
*66735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f
*75726365732e7079521e0000009b0000007312000000000210012501030111010e010a01120112
*016301000000050000000400000043000000738e0000007c0000707f0001740000690100640100
*8301006902008300006903008300007d01007861007c0100445d4c007d02007c02006904006400
*006402008302005c02007d03007d04007c03006403006a02006f2100017c00006906007c040069
*0700830000690400640400830100830100015071290001712900577408006405008202006e0100
*017c0000640600195328070000004e73100000002f7573722f62696e2f73775f76657273690100
*0000730f00000050726f6475637456657273696f6e3a520e0000007306000000576861743f2169
*00000000280900000074020000006f737405000000706f70656e740400000072656164740a0000
*0073706c69746c696e6573520700000052120000007406000000617070656e6474050000007374
*7269705218000000280500000074060000005f63616368657404000000696e666f74040000006c
*696e6574030000006b6579740500000076616c756528000000002800000000733a000000433a5c
*7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c
*706b675f7265736f75726365732e70795216000000a70000007314000000000107011b01070006
*0118010d011c0109020d016301000000010000000300000043000000731e000000680200640100
*64020036640100640300366900007c00007c00008302005328040000004e740300000070706374
*07000000506f7765725043740f000000506f7765725f4d6163696e746f73682801000000740300
*0000676574280100000074070000006d616368696e6528000000002800000000733a000000433a
*5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e656767
*5c706b675f7265736f75726365732e7079740c0000005f6d61636f73785f61726368b300000073
*020000000001630000000004000000090000004300000073ac0000006401006402006b00006c01
*007d0000017c00008300007d01007402006903006403006a02006f7f00017c0100690400640400
*8301000c6f6e00017954007405008300007d020074060069070083000064050019690800640600
*6407008302007d03006408007409007c0200640900198301007409007c0200640a001983010074
*0a007c030083010066030016535771a80004740b006a0a006f07000101010171a80001586e0100
*017c010053280b00000073c400000052657475726e207468697320706c6174666f726d27732073
*7472696e6720666f7220706c6174666f726d2d737065636966696320646973747269627574696f
*6e730a0a202020205858582043757272656e746c792074686973206973207468652073616d6520
*6173206060646973747574696c732e7574696c2e6765745f706c6174666f726d282960602c2062
*75742069740a202020206e6565647320736f6d65206861636b7320666f72204c696e757820616e
*64204d6163204f5320582e0a2020202069ffffffff28010000005240000000520d000000730700
*00006d61636f73782d690400000074010000002074010000005f730f0000006d61636f73782d25
*642e25642d257369000000006901000000280c000000740e000000646973747574696c732e7574
*696c524000000052130000005214000000740a0000007374617274737769746852160000005276
*0000007405000000756e616d6574070000007265706c6163657403000000696e74528600000052
*18000000280400000052400000005219000000740700000076657273696f6e5285000000280000
*00002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e
*366331346465766465762e6567675c706b675f7265736f75726365732e7079520f000000b60000
*0073160000000006100109012101030109011c011d0112010e03090173180000006d61636f7378
*2d285c642b295c2e285c642b292d282e2a29731f00000064617277696e2d285c642b295c2e285c
*642b295c2e285c642b292d282e2a29630200000007000000040000004300000073630100007c00
*006409006a0800701a00017c01006409006a0800700d00017c00007c01006a02006f0500017401
*0053017402006903007c01008301007d02007c02006f1d01017402006903007c00008301007d03
*007c0300708f00017404006903007c00008301007d04007c04006f7400017405007c0400690600
*6401008301008301007d05006402007c02006906006401008301007c0200690600640300830100
*660200167d06007c05006404006a02006f0d00017c06006405006a0500701a00017c0500640600
*6a02006f1200017c06006407006a05006f05000174010053016e01000174070053017c03006906
*006401008301007c02006906006401008301006a0300701f00017c03006906006408008301007c
*02006906006408008301006a03006f05000174070053017405007c030069060064030083010083
*01007405007c02006906006403008301008301006a04006f050001740700530174010053017407
*0053280a00000073db00000043616e20636f646520666f7220746865206070726f766964656460
*20706c6174666f726d2072756e206f6e20746865206072657175697265646020706c6174666f72
*6d3f0a0a2020202052657475726e7320747275652069662065697468657220706c6174666f726d
*2069732060604e6f6e6560602c206f722074686520706c6174666f726d73206172652065717561
*6c2e0a0a20202020585858204e6565647320636f6d7061746962696c69747920636865636b7320
*666f72204c696e757820616e64206f7468657220756e697879204f5365732e0a20202020690100
*0000730500000025732e257369020000006907000000730400000031302e336908000000730400
*000031302e3469030000004e280800000052120000007404000000547275655210000000521100
*0000741300000064617277696e56657273696f6e537472696e67528d0000005217000000740500
*000046616c73652807000000740800000070726f76696465647408000000726571756972656474
*060000007265714d6163740700000070726f764d6163740a00000070726f7644617277696e7408
*0000006476657273696f6e740c0000006d61636f7376657273696f6e2800000000280000000073
*3a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663313464657664
*65762e6567675c706b675f7265736f75726365732e70795241000000ce000000732a0000000007
*270105030f0107010f0307040f010701150122011a011a06090105031f011f0105052b01050205
*036302000000040000000300000043000000734e0000007400006901006401008301006902007d
*02007c0200640200197d03007c0200690300830000017c03007c02006402003c7404007c000083
*0100640300196905007c01007c02008302000164040053280500000073400000004c6f63617465
*20646973747269627574696f6e2060646973745f737065636020616e642072756e206974732060
*7363726970745f6e616d6560207363726970746901000000526000000069000000004e28060000
*00521300000074090000005f6765746672616d657409000000665f676c6f62616c737405000000
*636c656172521c000000521d00000028040000007409000000646973745f73706563740b000000
*7363726970745f6e616d6574020000006e73520900000028000000002800000000733a00000043
*3a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567
*675c706b675f7265736f75726365732e7079521d00000001010000730a000000000212010a010a
*010a016301000000010000000300000043000000736a0000007400007c00007401008302006f13
*00017402006903007c00008301007d00006e0100017400007c00007402008302006f1000017404
*007c00008301007d00006e0100017400007c0000740500830200701300017406006401007c0000
*8302008201006e0100017c0000532802000000734000000052657475726e20612063757272656e
*7420646973747269627574696f6e206f626a65637420666f72206120526571756972656d656e74
*206f7220737472696e67732d000000457870656374656420737472696e672c2052657175697265
*6d656e742c206f7220446973747269627574696f6e2807000000526b000000740a000000626173
*65737472696e67523500000074050000007061727365521e000000523400000074090000005479
*70654572726f72280100000074040000006469737428000000002800000000733a000000433a5c
*7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c
*706b675f7265736f75726365732e7079521f0000000b010000730e000000000210001301100010
*0110011301630300000003000000030000004300000073160000007400007c0000830100690100
*7c01007c0200830200532801000000734400000052657475726e20606e616d656020656e747279
*20706f696e74206f66206067726f75706020666f7220606469737460206f722072616973652049
*6d706f72744572726f722802000000521f0000005220000000280300000052a200000052170000
*00520900000028000000002800000000733a000000433a5c7461686f652d6c6166735c73657475
*70746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f75726365732e70
*795220000000130100007302000000000263020000000200000002000000430000007313000000
*7400007c00008301006901007c0100830100532801000000733d00000052657475726e20746865
*20656e74727920706f696e74206d617020666f72206067726f7570602c206f7220746865206675
*6c6c20656e747279206d61702802000000521f0000005221000000280200000052a20000005217
*00000028000000002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f
*6f6c732d302e366331346465766465762e6567675c706b675f7265736f75726365732e70795221
*000000170100007302000000000263030000000300000003000000430000007316000000740000
*7c00008301006901007c01007c0200830200532801000000733c00000052657475726e20746865
*20456e747279506f696e74206f626a65637420666f72206067726f7570602b606e616d65602c20
*6f722060604e6f6e6560602802000000521f0000005222000000280300000052a2000000521700
*0000520900000028000000002800000000733a000000433a5c7461686f652d6c6166735c736574
*7570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f75726365732e
*707952220000001b010000730200000000026300000000000000000100000042000000733e0000
*006500005a01006400008400005a02006401008400005a03006402008400005a04006403008400
*005a05006404008400005a06006405008400005a07005253280600000063010000000100000001
*000000430000007304000000640100532802000000733b000000446f657320746865207061636b
*616765277320646973747269627574696f6e20636f6e7461696e20746865206e616d6564206d65
*7461646174613f4e28000000002801000000520900000028000000002800000000733a00000043
*3a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567
*675c706b675f7265736f75726365732e7079740c0000006861735f6d6574616461746122010000
*730000000063010000000100000001000000430000007304000000640100532802000000732700
*0000546865206e616d6564206d65746164617461207265736f7572636520617320612073747269
*6e674e28000000002801000000520900000028000000002800000000733a000000433a5c746168
*6f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b67
*5f7265736f75726365732e7079740c0000006765745f6d65746164617461250100007300000000
*6301000000010000000100000043000000730400000064010053280200000073d2000000596965
*6c64206e616d6564206d65746164617461207265736f75726365206173206c697374206f66206e
*6f6e2d626c616e6b206e6f6e2d636f6d6d656e74206c696e65730a0a202020202020204c656164
*696e6720616e6420747261696c696e672077686974657370616365206973207374726970706564
*2066726f6d2065616368206c696e652c20616e64206c696e65730a202020202020207769746820
*606023606020617320746865206669727374206e6f6e2d626c616e6b2063686172616374657220
*617265206f6d69747465642e4e2800000000280100000052090000002800000000280000000073
*3a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663313464657664
*65762e6567675c706b675f7265736f75726365732e707974120000006765745f6d657461646174
*615f6c696e65732801000073000000006301000000010000000100000043000000730400000064
*0100532802000000733e000000497320746865206e616d6564206d657461646174612061206469
*726563746f72793f2020286c696b652060606f732e706174682e697364697228296060294e2800
*0000002801000000520900000028000000002800000000733a000000433a5c7461686f652d6c61
*66735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f
*75726365732e7079740e0000006d657461646174615f69736469722e0100007300000000630100
*00000100000001000000430000007304000000640100532802000000733f0000004c697374206f
*66206d65746164617461206e616d657320696e20746865206469726563746f727920286c696b65
*2060606f732e6c69737464697228296060294e2800000000280100000052090000002800000000
*2800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663
*31346465766465762e6567675c706b675f7265736f75726365732e707974100000006d65746164
*6174615f6c69737464697231010000730000000063020000000200000001000000430000007304
*000000640100532802000000733d0000004578656375746520746865206e616d65642073637269
*707420696e2074686520737570706c696564206e616d6573706163652064696374696f6e617279
*4e28000000002802000000529d00000074090000006e616d657370616365280000000028000000
*00733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465
*766465762e6567675c706b675f7265736f75726365732e7079521d000000340100007300000000
*28080000005260000000526500000052a300000052a400000052a500000052a600000052a70000
*00521d000000280000000028000000002800000000733a000000433a5c7461686f652d6c616673
*5c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f7572
*6365732e7079524d00000020010000730c00000006020903090309060903090363000000000000
*0000010000004200000073440000006500005a01006400005a02006401008400005a0300640200
*8400005a04006403008400005a05006404008400005a06006405008400005a0700640600840000
*5a0800525328070000007333000000416e206f626a65637420746861742070726f766964657320
*61636365737320746f207061636b616765207265736f7572636573630200000002000000010000
*00430000007304000000640100532802000000736400000052657475726e206120747275652066
*696c6573797374656d207061746820666f7220607265736f757263655f6e616d65600a0a202020
*2020202020606d616e6167657260206d75737420626520616e206060495265736f757263654d61
*6e6167657260604e2800000000280200000074070000006d616e61676572740d0000007265736f
*757263655f6e616d6528000000002800000000733a000000433a5c7461686f652d6c6166735c73
*65747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f75726365
*732e707974150000006765745f7265736f757263655f66696c656e616d654c0100007300000000
*630200000002000000010000004300000073040000006401005328020000007369000000526574
*75726e2061207265616461626c652066696c652d6c696b65206f626a65637420666f7220607265
*736f757263655f6e616d65600a0a2020202020202020606d616e6167657260206d757374206265
*20616e206060495265736f757263654d616e6167657260604e2800000000280200000052a90000
*0052aa00000028000000002800000000733a000000433a5c7461686f652d6c6166735c73657475
*70746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f75726365732e70
*7974130000006765745f7265736f757263655f73747265616d5101000073000000006302000000
*0200000001000000430000007304000000640100532802000000736d00000052657475726e2061
*20737472696e6720636f6e7461696e696e672074686520636f6e74656e7473206f662060726573
*6f757263655f6e616d65600a0a2020202020202020606d616e6167657260206d75737420626520
*616e206060495265736f757263654d616e6167657260604e2800000000280200000052a9000000
*52aa00000028000000002800000000733a000000433a5c7461686f652d6c6166735c7365747570
*746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f75726365732e7079
*74130000006765745f7265736f757263655f737472696e67560100007300000000630100000001
*00000001000000430000007304000000640100532802000000732c000000446f65732074686520
*7061636b61676520636f6e7461696e20746865206e616d6564207265736f757263653f4e280000
*0000280100000052aa00000028000000002800000000733a000000433a5c7461686f652d6c6166
*735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f75
*726365732e7079740c0000006861735f7265736f757263655b0100007300000000630100000001
*00000001000000430000007304000000640100532802000000733e000000497320746865206e61
*6d6564207265736f757263652061206469726563746f72793f2020286c696b652060606f732e70
*6174682e697364697228296060294e2800000000280100000052aa000000280000000028000000
*00733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465
*766465762e6567675c706b675f7265736f75726365732e707952290000005e0100007300000000
*63010000000100000001000000430000007304000000640100532802000000733f0000004c6973
*74206f66207265736f75726365206e616d657320696e20746865206469726563746f727920286c
*696b652060606f732e6c69737464697228296060294e2800000000280100000052aa0000002800
*0000002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d30
*2e366331346465766465762e6567675c706b675f7265736f75726365732e707952270000006101
*00007300000000280900000052600000005265000000526600000052ab00000052ac00000052ad
*00000052ae00000052290000005227000000280000000028000000002800000000733a00000043
*3a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567
*675c706b675f7265736f75726365732e7079524e00000049010000730e00000006010602090509
*050905090309036300000000000000000400000042000000739e0000006500005a01006400005a
*0200640e006401008401005a04006402008400005a05006403008400005a06006404008400005a
*0700640e006405008401005a08006406008400005a09006407008400005a0a00640e00650b0064
*08008402005a0c00640e00640e006409008402005a0d00640e00640e00650b00640a008403005a
*0e00640b008400005a0f00640c008400005a1000640d008400005a11005253280f000000734400
*00004120636f6c6c656374696f6e206f662061637469766520646973747269627574696f6e7320
*6f6e207379732e7061746820286f7220612073696d696c6172206c697374296302000000030000
*00030000004300000073600000006700007c00005f00006800007c00005f01006800007c00005f
*02006700007c00005f03007c01006401006a08006f0d00017405006906007d01006e010001781b
*007c0100445d13007d02007c00006907007c02008301000171450057640100532802000000733f
*00000043726561746520776f726b696e67207365742066726f6d206c697374206f662070617468
*20656e7472696573202864656661756c743d7379732e70617468294e2808000000740700000065
*6e7472696573740a000000656e7472795f6b657973740600000062795f6b657974090000006361
*6c6c6261636b735212000000521300000074040000007061746874090000006164645f656e7472
*792803000000526300000052af0000007405000000656e74727928000000002800000000733a00
*0000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36633134646576646576
*2e6567675c706b675f7265736f75726365732e707974080000005f5f696e69745f5f7501000073
*12000000000209010901090109020d010d02070006016302000000030000000500000043000000
*73540000007c00006900006901007c0100670000830200017c00006902006903007c0100830100
*01782a007404007c0100740500830200445d19007d02007c00006906007c02007c010074070083
*0300017133005764010053280200000073dd01000041646420612070617468206974656d20746f
*2060602e656e747269657360602c2066696e64696e6720616e7920646973747269627574696f6e
*73206f6e2069740a0a2020202020202020606066696e645f646973747269627574696f6e732865
*6e7472792c46616c7365296060206973207573656420746f2066696e6420646973747269627574
*696f6e730a2020202020202020636f72726573706f6e64696e6720746f20746865207061746820
*656e7472792c20616e642074686579206172652061646465642e202060656e747279602069730a
*2020202020202020616c7761797320617070656e64656420746f2060602e656e74726965736060
*2c206576656e20696620697420697320616c72656164792070726573656e742e0a202020202020
*2020285468697320697320626563617573652060607379732e7061746860602063616e20636f6e
*7461696e207468652073616d652076616c7565206d6f7265207468616e0a20202020202020206f
*6e63652c20616e64207468652060602e656e74726965736060206f66207468652060607379732e
*70617468606020576f726b696e675365742073686f756c6420616c776179730a20202020202020
*20657175616c2060607379732e7061746860602e290a20202020202020204e280800000052b000
*0000740a00000073657464656661756c7452af000000527a000000522d000000528f0000007403
*00000061646452910000002803000000526300000052b500000052a20000002800000000280000
*0000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663313464
*65766465762e6567675c706b675f7265736f75726365732e707952b400000083010000730a0000
*00000a1301100110000601630200000002000000020000004300000073190000007c0000690000
*6901007c01006902008301007c01006a0200532801000000733900000054727565206966206064
*69737460206973207468652061637469766520646973747269627574696f6e20666f7220697473
*2070726f6a656374280300000052b10000005284000000527f0000002802000000526300000052
*a200000028000000002800000000733a000000433a5c7461686f652d6c6166735c736574757074
*6f6f6c732d302e366331346465766465762e6567675c706b675f7265736f75726365732e707974
*0c0000005f5f636f6e7461696e735f5f9301000073020000000002630200000003000000030000
*0043000000734a0000007c00006900006901007c01006902008301007d02007c02006401006a09
*006f2000017c02007c01006a07006f1300017404007c02007c01008302008201006e0500017c02
*005364010053280200000073d001000046696e64206120646973747269627574696f6e206d6174
*6368696e6720726571756972656d656e742060726571600a0a2020202020202020496620746865
*726520697320616e2061637469766520646973747269627574696f6e20666f7220746865207265
*717565737465642070726f6a6563742c20746869730a202020202020202072657475726e732069
*74206173206c6f6e67206173206974206d65657473207468652076657273696f6e207265717569
*72656d656e74207370656369666965642062790a202020202020202060726571602e2020427574
*2c20696620746865726520697320616e2061637469766520646973747269627574696f6e20666f
*72207468652070726f6a65637420616e642069740a2020202020202020646f6573202a6e6f742a
*206d6565742074686520607265716020726571756972656d656e742c20606056657273696f6e43
*6f6e666c6963746060206973207261697365642e0a202020202020202049662074686572652069
*73206e6f2061637469766520646973747269627574696f6e20666f722074686520726571756573
*7465642070726f6a6563742c2060604e6f6e6560600a202020202020202069732072657475726e
*65642e0a20202020202020204e280500000052b10000005284000000527f000000521200000052
*3800000028030000005263000000740300000072657152a200000028000000002800000000733a
*000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465
*762e6567675c706b675f7265736f75726365732e7079526c0000009b0100007308000000000a15
*011a0113026303000000060000000300000063000000736b0000007864007c0000445d5c007d03
*007c03006900007c01008301007d04007c02006401006a08006f2000017837007c040069020083
*0000445d0b007d05007c0500560171360057710700017c02007c04006a06006f0d00017c04007c
*0200195601710700017107005764010053280200000073130100005969656c6420656e74727920
*706f696e74206f626a656374732066726f6d206067726f757060206d61746368696e6720606e61
*6d65600a0a2020202020202020496620606e616d6560206973204e6f6e652c207969656c647320
*616c6c20656e74727920706f696e747320696e206067726f7570602066726f6d20616c6c0a2020
*202020202020646973747269627574696f6e7320696e2074686520776f726b696e67207365742c
*206f7468657277697365206f6e6c79206f6e6573206d61746368696e670a202020202020202062
*6f7468206067726f75706020616e6420606e616d656020617265207969656c6465642028696e20
*646973747269627574696f6e206f72646572292e0a20202020202020204e280300000052210000
*005212000000740600000076616c756573280600000052630000005217000000520900000052a2
*00000052af0000007402000000657028000000002800000000733a000000433a5c7461686f652d
*6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265
*736f75726365732e70795223000000ab01000073120000000007070006010f010d010d0006010d
*010d01630300000005000000030000004300000073510000007400006901006401008301006902
*007d03007c0300640200197d04007c0300690300830000017c04007c03006402003c7c00006904
*007c0100830100640300196905007c02007c030083020001640400532805000000733f0000004c
*6f6361746520646973747269627574696f6e20666f72206072657175697265736020616e642072
*756e20607363726970745f6e616d6560207363726970746901000000526000000069000000004e
*280600000052130000005299000000529a000000529b000000521c000000521d00000028050000
*00526300000074080000007265717569726573529d000000529e00000052090000002800000000
*2800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663
*31346465766465762e6567675c706b675f7265736f75726365732e7079521d000000ba01000073
*0a000000000212010a010a010a016301000000040000000500000063000000735d000000680000
*7d01007850007c0000690000445d45007d0200783c007c00006901007c020019445d2d007d0300
*7c03007c01006a07006f1a00016401007c01007c03003c7c00006902007c030019560171240001
*712400577110005764020053280300000073b80000005969656c6420646973747269627574696f
*6e7320666f72206e6f6e2d6475706c69636174652070726f6a6563747320696e2074686520776f
*726b696e67207365740a0a2020202020202020546865207969656c64206f726465722069732074
*6865206f7264657220696e20776869636820746865206974656d7327207061746820656e747269
*657320776572650a2020202020202020616464656420746f2074686520776f726b696e67207365
*742e0a202020202020202069010000004e280300000052af00000052b000000052b10000002804
*000000526300000074040000007365656e74040000006974656d527f0000002800000000280000
*0000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663313464
*65766465762e6567675c706b675f7265736f75726365732e707974080000005f5f697465725f5f
*c40100007310000000000606010a0006010e0006010d010a016304000000060000000300000043
*00000073e60000007c03006f1700017c01006900007c00006901007c0200830200016e0100017c
*02006401006a08006f0d00017c01006903007d02006e0100017c00006904006905007c02006700
*008302007d04007c00006904006905007c01006903006700008302007d05007c01006906007c00
*006907006a06006f05000164010053017c01007c00006907007c01006906003c7c01006906007c
*04006a07006f1400017c04006908007c0100690600830100016e0100017c01006906007c05006a
*07006f1400017c05006908007c0100690600830100016e0100017c00006909007c010083010001
*64010053280200000073f90100004164642060646973746020746f20776f726b696e6720736574
*2c206173736f63696174656420776974682060656e747279600a0a202020202020202049662060
*656e7472796020697320756e7370656369666965642c2069742064656661756c747320746f2074
*68652060602e6c6f636174696f6e6060206f66206064697374602e0a20202020202020204f6e20
*657869742066726f6d207468697320726f7574696e652c2060656e747279602069732061646465
*6420746f2074686520656e64206f662074686520776f726b696e670a2020202020202020736574
*27732060602e656e7472696573606020286966206974207761736e277420616c72656164792070
*726573656e74292e0a0a2020202020202020606469737460206973206f6e6c7920616464656420
*746f2074686520776f726b696e6720736574206966206974277320666f7220612070726f6a6563
*7420746861740a2020202020202020646f65736e277420616c7265616479206861766520612064
*6973747269627574696f6e20696e20746865207365742e2020496620697427732061646465642c
*20616e790a202020202020202063616c6c6261636b732072656769737465726564207769746820
*74686520606073756273637269626528296060206d6574686f642077696c6c2062652063616c6c
*65642e0a20202020202020204e280a0000007409000000696e736572745f6f6e52af0000005212
*00000074080000006c6f636174696f6e52b000000052b7000000527f00000052b1000000527a00
*0000740a0000005f61646465645f6e65772806000000526300000052a200000052b50000007406
*000000696e7365727474040000006b65797374050000006b657973322800000000280000000073
*3a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663313464657664
*65762e6567675c706b675f7265736f75726365732e707952b8000000d1010000731c000000000b
*070117020d010d0115011801130105021001100114011001140163040000000900000005000000
*4300000073640100007400007c0100830100640100640100640200850300197d01006800007d04
*006800007d05006700007d06007832017c01006f2a01017c01006901006403008301007d07007c
*07007c04006a06006f070001712e006e0100017c05006902007c07006903008301007d08007c08
*006401006a08006f9400017c00006905006902007c07006903008301007d08007c08006401006a
*08006f6100017c02006401006a08006f1300017406007c00006907008301007d02006e0100017c
*02006908007c07007c00007c0300830300047d08007c05007c07006903003c7c08006401006a08
*006f1000017409007c070083010082010071fa00016e0100017c0600690a007c0800830100016e
*0100017c08007c07006a07006f130001740b007c08007c07008302008201006e0100017c010069
*0c007c0800690d007c0700690e008301006401006401006402008503001983010001740f007c04
*007c07003c712e0001577c0600532804000000731b0200004c69737420616c6c20646973747269
*627574696f6e73206e656564656420746f20287265637572736976656c7929206d656574206072
*6571756972656d656e7473600a0a202020202020202060726571756972656d656e747360206d75
*737420626520612073657175656e6365206f66206060526571756972656d656e746060206f626a
*656374732e202060656e76602c0a2020202020202020696620737570706c6965642c2073686f75
*6c6420626520616e206060456e7669726f6e6d656e74606020696e7374616e63652e202049660a
*20202020202020206e6f7420737570706c6965642c2069742064656661756c747320746f20616c
*6c20646973747269627574696f6e7320617661696c61626c652077697468696e20616e790a2020
*202020202020656e747279206f7220646973747269627574696f6e20696e2074686520776f726b
*696e67207365742e202060696e7374616c6c6572602c20696620737570706c6965642c0a202020
*202020202077696c6c20626520696e766f6b65642077697468206561636820726571756972656d
*656e7420746861742063616e6e6f74206265206d657420627920616e0a2020202020202020616c
*72656164792d696e7374616c6c656420646973747269627574696f6e3b2069742073686f756c64
*2072657475726e2061206060446973747269627574696f6e6060206f720a202020202020202060
*604e6f6e6560602e0a20202020202020204e69ffffffff6900000000281000000074040000006c
*6973747403000000706f705284000000527f000000521200000052b1000000523100000052af00
*0000740a000000626573745f6d617463685239000000527a000000523800000074060000006578
*74656e6452bd0000007406000000657874726173528f00000028090000005263000000740c0000
*00726571756972656d656e74737403000000656e767409000000696e7374616c6c657274090000
*0070726f636573736564740400000062657374740b000000746f5f616374697661746552ba0000
*0052a200000028000000002800000000733a000000433a5c7461686f652d6c6166735c73657475
*70746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f75726365732e70
*7974070000007265736f6c7665ed0100007330000000000c1901060106010602030007010f010d
*02070112010d0215010d010d01130120010d01140111010d02130126010f0263050000000f0000
*000900000043000000733b0100007400007c01008301007d05007c050069010083000001680000
*7d06006800007d07007c02006401006a08006f1d00017403007c00006904008301007d08007c08
*007c0100377d08006e0b00017c02007c0100177d08007c00006905006700008301007d09007406
*007c09006907007c00008302000178a3007c0500445d9b007d0a007892007c01007c0a0019445d
*86007d0b007c0b006908008300006701007d0c007919007c09006909007c0c007c08007c030083
*03007d0d00576e2e0004740a006a0a006f220001017d0e00017c0e007c06007c0b003c7c04006f
*070001718d007113010150718d0001587406007c09006907007c0d00830200017c0700690b0074
*0c00690d007c0d008301008301000150718d0057717c00577400007c07008301007d07007c0700
*690100830000017c07007c0600660200532802000000736106000046696e6420616c6c20616374
*6976617461626c6520646973747269627574696f6e7320696e2060706c7567696e5f656e76600a
*0a20202020202020204578616d706c652075736167653a3a0a0a20202020202020202020202064
*6973747269627574696f6e732c206572726f7273203d20776f726b696e675f7365742e66696e64
*5f706c7567696e73280a20202020202020202020202020202020456e7669726f6e6d656e742870
*6c7567696e5f6469726c697374290a202020202020202020202020290a20202020202020202020
*20206d617028776f726b696e675f7365742e6164642c20646973747269627574696f6e73292020
*232061646420706c7567696e732b6c69627320746f207379732e706174680a2020202020202020
*202020207072696e742022436f756c646e2774206c6f6164222c206572726f7273202020202020
*20202320646973706c6179206572726f72730a0a20202020202020205468652060706c7567696e
*5f656e76602073686f756c6420626520616e206060456e7669726f6e6d656e74606020696e7374
*616e6365207468617420636f6e7461696e730a20202020202020206f6e6c792064697374726962
*7574696f6e7320746861742061726520696e207468652070726f6a65637427732022706c756769
*6e206469726563746f727922206f720a20202020202020206469726563746f726965732e205468
*65206066756c6c5f656e76602c20696620737570706c6965642c2073686f756c6420626520616e
*206060456e7669726f6e6d656e7460600a2020202020202020636f6e7461696e7320616c6c2063
*757272656e746c792d617661696c61626c6520646973747269627574696f6e732e202049662060
*66756c6c5f656e7660206973206e6f740a2020202020202020737570706c6965642c206f6e6520
*69732063726561746564206175746f6d61746963616c6c792066726f6d20746865206060576f72
*6b696e67536574606020746869730a20202020202020206d6574686f642069732063616c6c6564
*206f6e2c2077686963682077696c6c207479706963616c6c79206d65616e207468617420657665
*7279206469726563746f7279206f6e0a202020202020202060607379732e706174686060207769
*6c6c206265207363616e6e656420666f7220646973747269627574696f6e732e0a0a2020202020
*20202060696e7374616c6c6572602069732061207374616e6461726420696e7374616c6c657220
*63616c6c6261636b2061732075736564206279207468650a202020202020202060607265736f6c
*766528296060206d6574686f642e20546865206066616c6c6261636b6020666c616720696e6469
*636174657320776865746865722077652073686f756c640a2020202020202020617474656d7074
*20746f207265736f6c7665206f6c6465722076657273696f6e73206f66206120706c7567696e20
*696620746865206e65776573742076657273696f6e0a202020202020202063616e6e6f74206265
*207265736f6c7665642e0a0a202020202020202054686973206d6574686f642072657475726e73
*206120322d7475706c653a202860646973747269627574696f6e73602c20606572726f725f696e
*666f60292c2077686572650a202020202020202060646973747269627574696f6e736020697320
*61206c697374206f662074686520646973747269627574696f6e7320666f756e6420696e206070
*6c7567696e5f656e76600a2020202020202020746861742077657265206c6f616461626c652c20
*616c6f6e67207769746820616e79206f7468657220646973747269627574696f6e732074686174
*20617265206e65656465640a2020202020202020746f207265736f6c7665207468656972206465
*70656e64656e636965732e2020606572726f725f696e666f6020697320612064696374696f6e61
*7279206d617070696e670a2020202020202020756e6c6f616461626c6520706c7567696e206469
*73747269627574696f6e7320746f20616e20657863657074696f6e20696e7374616e6365206465
*7363726962696e67207468650a20202020202020206572726f722074686174206f636375727265
*642e20557375616c6c7920746869732077696c6c2062652061206060446973747269627574696f
*6e4e6f74466f756e646060206f720a2020202020202020606056657273696f6e436f6e666c6963
*74606020696e7374616e63652e0a20202020202020204e280e00000052c7000000740400000073
*6f72745212000000523100000052af000000525f00000074030000006d617052b8000000740e00
*000061735f726571756972656d656e7452d2000000523700000074060000007570646174657404
*00000064696374740800000066726f6d6b657973280f0000005263000000740a000000706c7567
*696e5f656e76740800000066756c6c5f656e7652ce000000740800000066616c6c6261636b740f
*000000706c7567696e5f70726f6a65637473740a0000006572726f725f696e666f740d00000064
*6973747269627574696f6e7352cd000000740a000000736861646f775f736574740c0000007072
*6f6a6563745f6e616d6552a200000052ba00000074090000007265736f6c766565737401000000
*7628000000002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c
*732d302e366331346465766465762e6567675c706b675f7265736f75726365732e7079740c0000
*0066696e645f706c7567696e7316020000733800000000230c010a02060106020d010f010e020a
*020f011002070006020b0006020f020301190210010a010701070206031001160309020c010a02
*630100000004000000030000004700000073370000007c00006900007401007c01008301008301
*007d0200781b007c0200445d13007d03007c00006902007c030083010001711c00577c02005328
*0100000073be010000456e73757265207468617420646973747269627574696f6e73206d617463
*68696e672060726571756972656d656e74736020617265206163746976617465640a0a20202020
*2020202060726571756972656d656e747360206d757374206265206120737472696e67206f7220
*612028706f737369626c792d6e6573746564292073657175656e63650a20202020202020207468
*6572656f662c2073706563696679696e672074686520646973747269627574696f6e7320616e64
*2076657273696f6e732072657175697265642e20205468650a202020202020202072657475726e
*2076616c756520697320612073657175656e6365206f662074686520646973747269627574696f
*6e732074686174206e656564656420746f2062650a202020202020202061637469766174656420
*746f2066756c66696c6c2074686520726571756972656d656e74733b20616c6c2072656c657661
*6e7420646973747269627574696f6e73206172650a2020202020202020696e636c756465642c20
*6576656e2069662074686579207765726520616c72656164792061637469766174656420696e20
*7468697320776f726b696e67207365742e0a2020202020202020280300000052d2000000523c00
*000052b80000002804000000526300000052cc00000074060000006e656564656452a200000028
*000000002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d
*302e366331346465766465762e6567675c706b675f7265736f75726365732e7079521c00000068
*020000730a000000000a1502070006011102630200000003000000030000004300000073440000
*007c01007c00006900006a06006f05000164010053017c00006900006901007c01008301000178
*18007c0000445d10007d02007c01007c020083010001712c005764010053280200000073410000
*00496e766f6b65206063616c6c6261636b6020666f7220616c6c20646973747269627574696f6e
*732028696e636c7564696e67206578697374696e67206f6e6573294e280200000052b200000052
*7a00000028030000005263000000740800000063616c6c6261636b52a200000028000000002800
*000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36633134
*6465766465762e6567675c706b675f7265736f75726365732e7079740900000073756273637269
*62657a020000730c00000000021001050110010700060163020000000300000003000000430000
*007322000000781b007c0000690000445d10007d02007c02007c010083010001710a0057640000
*5328010000004e280100000052b20000002803000000526300000052a200000052e50000002800
*0000002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d30
*2e366331346465766465762e6567675c706b675f7265736f75726365732e707952c30000008302
*0000730600000000010a0006014e28120000005260000000526500000052660000005212000000
*52b600000052b400000052b9000000526c0000005223000000521d00000052c0000000528f0000
*0052b800000052d200000052e3000000521c00000052e600000052c30000002800000000280000
*00002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e
*366331346465766465762e6567675c706b675f7265736f75726365732e70795232000000720100
*00731c000000060106020c0e0910090809100c0f090a090d0f1c0f2a1251091209096300000000
*00000000040000004200000073860000006500005a01006400005a0200640c0065040083000065
*05006401008403005a06006402008400005a07006403008400005a0800640c006404008401005a
*09006405008400005a0a006406008400005a0b00640c006407008401005a0c00640c0064080084
*01005a0d006409008400005a0e00640a008400005a0f00640b008400005a10005253280d000000
*733500000053656172636861626c6520736e617073686f74206f6620646973747269627574696f
*6e73206f6e20612073656172636820706174686304000000040000000200000043000000733500
*00006800007c00005f00006800007c00005f01007c02007c00005f02007c03007c00005f03007c
*00006904007c0100830100016401005328020000007321030000536e617073686f742064697374
*7269627574696f6e7320617661696c61626c65206f6e20612073656172636820706174680a0a20
*20202020202020416e7920646973747269627574696f6e7320666f756e64206f6e206073656172
*63685f70617468602061726520616464656420746f2074686520656e7669726f6e6d656e742e0a
*2020202020202020607365617263685f70617468602073686f756c642062652061207365717565
*6e6365206f662060607379732e706174686060206974656d732e20204966206e6f740a20202020
*20202020737570706c6965642c2060607379732e70617468606020697320757365642e0a0a2020
*20202020202060706c6174666f726d6020697320616e206f7074696f6e616c20737472696e6720
*73706563696679696e6720746865206e616d65206f662074686520706c6174666f726d0a202020
*20202020207468617420706c6174666f726d2d737065636966696320646973747269627574696f
*6e73206d75737420626520636f6d70617469626c6520776974682e202049660a20202020202020
*20756e7370656369666965642c2069742064656661756c747320746f207468652063757272656e
*7420706c6174666f726d2e202060707974686f6e6020697320616e0a20202020202020206f7074
*696f6e616c20737472696e67206e616d696e672074686520646573697265642076657273696f6e
*206f6620507974686f6e2028652e672e20606027322e34276060293b0a20202020202020206974
*2064656661756c747320746f207468652063757272656e742076657273696f6e2e0a0a20202020
*20202020596f75206d6179206578706c696369746c79207365742060706c6174666f726d602028
*616e642f6f722060707974686f6e602920746f2060604e6f6e65606020696620796f750a202020
*20202020207769736820746f206d6170202a616c6c2a20646973747269627574696f6e732c206e
*6f74206a7573742074686f736520636f6d70617469626c652077697468207468650a2020202020
*20202072756e6e696e6720706c6174666f726d206f7220507974686f6e2076657273696f6e2e0a
*20202020202020204e280500000074080000005f646973746d6170527c00000052140000007406
*000000707974686f6e74040000007363616e28040000005263000000740b000000736561726368
*5f70617468521400000052e800000028000000002800000000733a000000433a5c7461686f652d
*6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265
*736f75726365732e707952b600000094020000730a000000001109010901090109016302000000
*02000000030000004300000073460000007c00006900006401006a0800702300017c0100690200
*6401006a0800701300017c01006902007c00006900006a02006f1300017403007c01006904007c
*000069040083020053280200000073e5000000497320646973747269627574696f6e2060646973
*74602061636365707461626c6520666f72207468697320656e7669726f6e6d656e743f0a0a2020
*20202020202054686520646973747269627574696f6e206d757374206d61746368207468652070
*6c6174666f726d20616e6420707974686f6e2076657273696f6e0a202020202020202072657175
*6972656d656e747320737065636966696564207768656e207468697320656e7669726f6e6d656e
*742077617320637265617465642c206f722046616c73650a202020202020202069732072657475
*726e65642e0a20202020202020204e280500000052e80000005212000000740a00000070795f76
*657273696f6e524100000052140000002802000000526300000052a20000002800000000280000
*0000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663313464
*65766465762e6567675c706b675f7265736f75726365732e7079740700000063616e5f616464ab
*02000073060000000007200113016302000000020000000200000043000000731b0000007c0000
*6900007c0100690100196902007c010083010001640100532802000000732200000052656d6f76
*65206064697374602066726f6d2074686520656e7669726f6e6d656e744e280300000052e70000
*00527f000000740600000072656d6f76652802000000526300000052a200000028000000002800
*000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36633134
*6465766465762e6567675c706b675f7265736f75726365732e707952ed000000b6020000730200
*00000002630200000004000000040000004300000073530000007c01006401006a08006f0d0001
*7401006902007d01006e0100017832007c0100445d2a007d02007821007403007c020083010044
*5d13007d03007c00006904007c0300830100017134005771210057640100532802000000736401
*00005363616e20607365617263685f706174686020666f7220646973747269627574696f6e7320
*757361626c6520696e207468697320656e7669726f6e6d656e740a0a2020202020202020416e79
*20646973747269627574696f6e7320666f756e642061726520616464656420746f207468652065
*6e7669726f6e6d656e742e0a2020202020202020607365617263685f70617468602073686f756c
*6420626520612073657175656e6365206f662060607379732e706174686060206974656d732e20
*204966206e6f740a2020202020202020737570706c6965642c2060607379732e70617468606020
*697320757365642e20204f6e6c7920646973747269627574696f6e7320636f6e666f726d696e67
*20746f0a202020202020202074686520706c6174666f726d2f707974686f6e2076657273696f6e
*20646566696e656420617420696e697469616c697a6174696f6e206172652061646465642e0a20
*202020202020204e28050000005212000000521300000052b3000000522d00000052b800000028
*04000000526300000052ea00000052bf00000052a200000028000000002800000000733a000000
*433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e65
*67675c706b675f7265736f75726365732e707952e9000000ba020000730e00000000080d010d02
*070006010d00060163020000000300000006000000430000007387000000790f007c0000690000
*7c01001953576e3400047401006a0a006f2800010101017c01006902008300007d01007c01007c
*00006903006a07006f05000167000053016e020001587c01007c00006900006a07006f2600017c
*00006903007c010019047d02007c00006900007c01003c7404007c0200830100016e0100017c00
*006900007c010019532801000000734b00000052657475726e2061206e65776573742d746f2d6f
*6c64657374206c697374206f6620646973747269627574696f6e7320666f72206070726f6a6563
*745f6e616d65600a20202020202020202805000000527c000000526f00000074050000006c6f77
*657252e7000000740b0000005f736f72745f64697374732803000000526300000052e000000074
*05000000646973747328000000002800000000733a000000433a5c7461686f652d6c6166735c73
*65747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f75726365
*732e7079740b0000005f5f6765746974656d5f5fc90200007314000000000303010f010e010c01
*10010a02100118010e02630200000003000000030000004300000073860000007c00006900007c
*01008301006f7200017c01006901008300006f6500017c00006902006903007c01006904006700
*008302007d02007c01007c02006a07006f3c00017c02006905007c0100830100017c0100690400
*7c00006906006a06006f1800017407007c00006906007c01006904001983010001717e00017182
*00016e010001640100532802000000733c00000041646420606469737460206966207765206060
*63616e5f6164642829606020697420616e642069742069736e277420616c726561647920616464
*65644e280800000052ec000000740b0000006861735f76657273696f6e52e700000052b7000000
*527f000000527a000000527c00000052ef0000002803000000526300000052a200000052f00000
*0028000000002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c
*732d302e366331346465766465762e6567675c706b675f7265736f75726365732e707952b80000
*00d9020000730c00000000021d0118010d010d0113016304000000050000000500000043000000
*735b0000007c02006900007c01008301007d04007c04006401006a09006f0500017c0400530178
*27007c00007c010069020019445d18007d04007c04007c01006a06006f0500017c04005301712f
*00577c00006903007c01007c030083020053280200000073b802000046696e6420646973747269
*627574696f6e2062657374206d61746368696e6720607265716020616e6420757361626c65206f
*6e2060776f726b696e675f736574600a0a2020202020202020546869732063616c6c7320746865
*20606066696e6428726571296060206d6574686f64206f66207468652060776f726b696e675f73
*65746020746f2073656520696620610a20202020202020207375697461626c6520646973747269
*627574696f6e20697320616c7265616479206163746976652e20202854686973206d6179207261
*6973650a2020202020202020606056657273696f6e436f6e666c696374606020696620616e2075
*6e7375697461626c652076657273696f6e206f66207468652070726f6a65637420697320616c72
*656164790a202020202020202061637469766520696e2074686520737065636966696564206077
*6f726b696e675f736574602e29202049662061207375697461626c652064697374726962757469
*6f6e0a202020202020202069736e2774206163746976652c2074686973206d6574686f64207265
*7475726e7320746865206e657765737420646973747269627574696f6e20696e207468650a2020
*202020202020656e7669726f6e6d656e742074686174206d656574732074686520606052657175
*6972656d656e74606020696e2060726571602e20204966206e6f207375697461626c650a202020
*2020202020646973747269627574696f6e20697320666f756e642c20616e642060696e7374616c
*6c65726020697320737570706c6965642c207468656e2074686520726573756c74206f660a2020
*20202020202063616c6c696e672074686520656e7669726f6e6d656e7427732060606f62746169
*6e287265712c20696e7374616c6c6572296060206d6574686f642077696c6c2062650a20202020
*2020202072657475726e65642e0a20202020202020204e2804000000526c000000521200000052
*7f00000074060000006f627461696e2805000000526300000052ba000000522b00000052ce0000
*0052a200000028000000002800000000733a000000433a5c7461686f652d6c6166735c73657475
*70746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f75726365732e70
*7952c9000000e30200007310000000000d0f010d0105010e0006010d0109016303000000030000
*000200000043000000731c0000007c02006401006a09006f0b00017c02007c0100830100530164
*010053280200000073de0100004f627461696e206120646973747269627574696f6e206d617463
*68696e672060726571756972656d656e74602028652e672e2076696120646f776e6c6f6164290a
*0a20202020202020204f627461696e20612064697374726f2074686174206d6174636865732072
*6571756972656d656e742028652e672e2076696120646f776e6c6f6164292e2020496e20746865
*0a202020202020202062617365206060456e7669726f6e6d656e74606020636c6173732c207468
*697320726f7574696e65206a7573742072657475726e730a20202020202020206060696e737461
*6c6c657228726571756972656d656e742960602c20756e6c6573732060696e7374616c6c657260
*206973204e6f6e652c20696e20776869636820636173650a20202020202020204e6f6e65206973
*2072657475726e656420696e73746561642e202054686973206d6574686f64206973206120686f
*6f6b207468617420616c6c6f777320737562636c61737365730a2020202020202020746f206174
*74656d7074206f746865722077617973206f66206f627461696e696e6720612064697374726962
*7574696f6e206265666f72652066616c6c696e67206261636b0a2020202020202020746f207468
*652060696e7374616c6c65726020617267756d656e742e4e280100000052120000002803000000
*5263000000740b000000726571756972656d656e7452ce00000028000000002800000000733a00
*0000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36633134646576646576
*2e6567675c706b675f7265736f75726365732e707952f3000000f8020000730400000000090d01
*63010000000200000003000000630000007332000000782b007c0000690000690100830000445d
*1a007d01007c00007c0100196f0900017c01005601711000017110005764010053280200000073
*3d0000005969656c642074686520756e697175652070726f6a656374206e616d6573206f662074
*686520617661696c61626c6520646973747269627574696f6e734e280200000052e700000052c5
*00000028020000005263000000527f00000028000000002800000000733a000000433a5c746168
*6f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b67
*5f7265736f75726365732e707952c00000000403000073080000000002100006010b0063020000
*00040000000400000043000000737f0000007400007c01007401008302006f1100017c00006902
*007c0100830100016e5b00017400007c01007403008302006f3700017847007c0100445d28007d
*0200781f007c01007c020019445d13007d03007c00006902007c03008301000171490057713800
*576e1400017404006401007c0100660100168301008201007c0000532802000000733200000049
*6e2d706c616365206164646974696f6e206f66206120646973747269627574696f6e206f722065
*6e7669726f6e6d656e74731b00000043616e27742061646420257220746f20656e7669726f6e6d
*656e742805000000526b000000523400000052b8000000523100000052a1000000280400000052
*6300000074050000006f74686572740700000070726f6a65637452a20000002800000000280000
*0000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663313464
*65766465762e6567675c706b675f7265736f75726365732e707974080000005f5f696164645f5f
*0c03000073140000000002100111011001070006010b0006011902130163020000000400000006
*0000004300000073400000007c00006900006700006401006403006402006403008301027d0200
*781e007c00007c0100660200445d10007d03007c02007c0300377d0200712800577c0200532804
*000000733400000041646420616e20656e7669726f6e6d656e74206f7220646973747269627574
*696f6e20746f20616e20656e7669726f6e6d656e74521400000052e80000004e2802000000525f
*00000052120000002804000000526300000052f500000074030000006e657752cd000000280000
*00002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e
*366331346465766465762e6567675c706b675f7265736f75726365732e707974070000005f5f61
*64645f5f18030000730a00000000021b010d0006010e014e281100000052600000005265000000
*52660000005212000000521b000000740800000050595f4d414a4f5252b600000052ec00000052
*ed00000052e900000052f100000052b800000052c900000052f300000052c000000052f7000000
*52f9000000280000000028000000002800000000733a000000433a5c7461686f652d6c6166735c
*7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f757263
*65732e70795231000000910200007318000000060106021517090b09040c0f0910090a0c150c0c
*0908090c6300000000000000000100000042000000730e0000006500005a01006400005a020052
*5328010000007354010000416e206572726f72206f636375727265642065787472616374696e67
*2061207265736f757263650a0a2020202054686520666f6c6c6f77696e67206174747269627574
*65732061726520617661696c61626c652066726f6d20696e7374616e636573206f662074686973
*20657863657074696f6e3a0a0a202020206d616e616765720a2020202020202020546865207265
*736f75726365206d616e6167657220746861742072616973656420746869732065786365707469
*6f6e0a0a2020202063616368655f706174680a2020202020202020546865206261736520646972
*6563746f727920666f72207265736f757263652065787472616374696f6e0a0a202020206f7269
*67696e616c5f6572726f720a202020202020202054686520657863657074696f6e20696e737461
*6e63652074686174206361757365642065787472616374696f6e20746f206661696c0a20202020
*2803000000526000000052650000005266000000280000000028000000002800000000733a0000
*00433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e
*6567675c706b675f7265736f75726365732e7079523b000000230300007302000000060d630000
*000000000000020000004200000073860000006500005a01006400005a0200640d005a04006401
*008400005a05006402008400005a06006403008400005a07006404008400005a08006405008400
*005a09006406008400005a0a006407008400005a0b006408008400005a0c00640e006409008401
*005a0d00640a008400005a0e00640b008400005a0f00651000640c008401005a11005253280f00
*000073270000004d616e616765207265736f757263652065787472616374696f6e20616e642070
*61636b616765736301000000010000000200000043000000730d0000006800007c00005f000064
*00005328010000004e2801000000740c0000006361636865645f66696c65732801000000526300
*000028000000002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f
*6c732d302e366331346465766465762e6567675c706b675f7265736f75726365732e707952b600
*00003903000073020000000001630300000003000000020000004300000073130000007400007c
*01008301006901007c0200830100532801000000731e000000446f657320746865206e616d6564
*207265736f757263652065786973743f2802000000521e00000052ae0000002803000000526300
*000074160000007061636b6167655f6f725f726571756972656d656e7452aa0000002800000000
*2800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663
*31346465766465762e6567675c706b675f7265736f75726365732e707952280000003c03000073
*020000000002630300000003000000020000004300000073130000007400007c01008301006901
*007c0200830100532801000000732c000000497320746865206e616d6564207265736f75726365
*20616e206578697374696e67206469726563746f72793f2802000000521e000000522900000028
*03000000526300000052fc00000052aa00000028000000002800000000733a000000433a5c7461
*686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b
*675f7265736f75726365732e7079522900000040030000730400000000020c0163030000000300
*0000030000004300000073160000007400007c01008301006901007c00007c0200830200532801
*000000733400000052657475726e206120747275652066696c6573797374656d20706174682066
*6f7220737065636966696564207265736f757263652802000000521e00000052ab000000280300
*0000526300000052fc00000052aa00000028000000002800000000733a000000433a5c7461686f
*652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f
*7265736f75726365732e7079522600000046030000730400000000020c01630300000003000000
*030000004300000073160000007400007c01008301006901007c00007c02008302005328010000
*00733900000052657475726e2061207265616461626c652066696c652d6c696b65206f626a6563
*7420666f7220737065636966696564207265736f757263652802000000521e00000052ac000000
*2803000000526300000052fc00000052aa00000028000000002800000000733a000000433a5c74
*61686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c70
*6b675f7265736f75726365732e707952250000004c030000730400000000020c01630300000003
*000000030000004300000073160000007400007c01008301006901007c00007c02008302005328
*01000000732500000052657475726e20737065636966696564207265736f757263652061732061
*20737472696e672802000000521e00000052ad0000002803000000526300000052fc00000052aa
*00000028000000002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f
*6f6c732d302e366331346465766465762e6567675c706b675f7265736f75726365732e70795224
*00000052030000730400000000020c016303000000030000000200000043000000731300000074
*00007c01008301006901007c020083010053280100000073310000004c6973742074686520636f
*6e74656e7473206f6620746865206e616d6564207265736f75726365206469726563746f727928
*02000000521e00000052270000002803000000526300000052fc00000052aa0000002800000000
*2800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663
*31346465766465762e6567675c706b675f7265736f75726365732e707952270000005803000073
*0400000000020c016301000000040000000400000043000000735e000000740000690100830000
*640100197d01007c0000690200700700017403008300007d02007404006402007c01007c020066
*0200168301007d03007c00007c03005f05007c02007c03005f06007c01007c03005f07007c0300
*82010064030053280400000073350000004769766520616e206572726f72206d65737361676520
*666f722070726f626c656d732065787472616374696e672066696c652873296901000000737d01
*000043616e277420657874726163742066696c6528732920746f206567672063616368650a0a54
*686520666f6c6c6f77696e67206572726f72206f63637572726564207768696c6520747279696e
*6720746f20657874726163742066696c6528732920746f2074686520507974686f6e206567670a
*63616368653a0a0a202025730a0a54686520507974686f6e206567672063616368652064697265
*63746f72792069732063757272656e746c792073657420746f3a0a0a202025730a0a5065726861
*707320796f7572206163636f756e7420646f6573206e6f74206861766520777269746520616363
*65737320746f2074686973206469726563746f72793f2020596f752063616e0a6368616e676520
*746865206361636865206469726563746f72792062792073657474696e67207468652050595448
*4f4e5f4547475f434143484520656e7669726f6e6d656e740a7661726961626c6520746f20706f
*696e7420746f20616e2061636365737369626c65206469726563746f72792e0a4e280800000052
*1300000074080000006578635f696e666f740f00000065787472616374696f6e5f706174685230
*000000523b00000052a9000000740a00000063616368655f70617468740e0000006f726967696e
*616c5f6572726f722804000000526300000074070000006f6c645f65786352ff00000074030000
*0065727228000000002800000000733a000000433a5c7461686f652d6c6166735c736574757074
*6f6f6c732d302e366331346465766465762e6567675c706b675f7265736f75726365732e707974
*1000000065787472616374696f6e5f6572726f725e0300007310000000000310011302030e1302
*090109010901630300000005000000060000004300000073620000007c00006900007007000174
*01008300007d03007402006903006904007c03007c0100640100177c02008c02007d0400790e00
*7405007c040083010001576e11000101017c0000690600830000016e0100586402007c00006907
*007c04003c7c040053280300000073ae02000052657475726e206162736f6c757465206c6f6361
*74696f6e20696e20636163686520666f722060617263686976655f6e616d656020616e6420606e
*616d6573600a0a202020202020202054686520706172656e74206469726563746f7279206f6620
*74686520726573756c74696e6720706174682077696c6c20626520637265617465642069662069
*7420646f65730a20202020202020206e6f7420616c72656164792065786973742e202060617263
*686976655f6e616d65602073686f756c642062652074686520626173652066696c656e616d6520
*6f66207468650a2020202020202020656e636c6f73696e672065676720287768696368206d6179
*206e6f7420626520746865206e616d65206f662074686520656e636c6f73696e67207a69706669
*6c6521292c0a2020202020202020696e636c7564696e672069747320222e656767222065787465
*6e73696f6e2e2020606e616d6573602c2069662070726f76696465642c2073686f756c64206265
*20610a202020202020202073657175656e6365206f662070617468206e616d6520706172747320
*22756e64657222207468652065676727732065787472616374696f6e206c6f636174696f6e2e0a
*0a202020202020202054686973206d6574686f642073686f756c64206f6e6c792062652063616c
*6c6564206279207265736f757263652070726f7669646572732074686174206e65656420746f0a
*20202020202020206f627461696e20616e2065787472616374696f6e206c6f636174696f6e2c20
*616e64206f6e6c7920666f72206e616d6573207468657920696e74656e6420746f0a2020202020
*202020657874726163742c20617320697420747261636b73207468652067656e65726174656420
*6e616d657320666f7220706f737369626c6520636c65616e7570206c617465722e0a2020202020
*20202073040000002d746d706901000000280800000052fe0000005230000000527600000052b3
*00000052150000005208000000520301000052fb00000028050000005263000000740c00000061
*7263686976655f6e616d6574050000006e616d6573740c000000657874726163745f7061746874
*0b0000007461726765745f7061746828000000002800000000733a000000433a5c7461686f652d
*6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265
*736f75726365732e7079740e0000006765745f63616368655f7061746887030000731000000000
*0d13011c0103010e0103010e020d01630300000004000000030000004300000073420000007400
*006901006401006a02006f2e00017400006902007c010083010069030064020042640300407d03
*007400006904007c01007c0300830200016e010001640400532805000000733402000050657266
*6f726d20616e7920706c6174666f726d2d737065636966696320706f737470726f63657373696e
*67206f66206074656d706e616d65600a0a20202020202020205468697320697320776865726520
*4d6163206865616465722072657772697465732073686f756c6420626520646f6e653b206f7468
*657220706c6174666f726d7320646f6e27740a20202020202020206861766520616e797468696e
*67207370656369616c20746865792073686f756c6420646f2e0a0a20202020202020205265736f
*757263652070726f7669646572732073686f756c642063616c6c2074686973206d6574686f6420
*4f4e4c59206166746572207375636365737366756c6c790a202020202020202065787472616374
*696e67206120636f6d70726573736564207265736f757263652e202054686579206d757374204e
*4f542063616c6c206974206f6e207265736f75726365730a202020202020202074686174206172
*6520616c726561647920696e207468652066696c6573797374656d2e0a0a202020202020202060
*74656d706e616d6560206973207468652063757272656e74202874656d706f7261727929206e61
*6d65206f66207468652066696c652c20616e64206066696c656e616d65600a2020202020202020
*697320746865206e616d652069742077696c6c2062652072656e616d656420746f206279207468
*652063616c6c6572206166746572207468697320726f7574696e650a2020202020202020726574
*75726e732e0a20202020202020207405000000706f736978696d01000069ff0f00004e28050000
*0052760000005209000000740400000073746174740700000073745f6d6f646574050000006368
*6d6f6428040000005263000000740800000074656d706e616d65520c000000520a000000280000
*00002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e
*366331346465766465762e6567675c706b675f7265736f75726365732e7079740b000000706f73
*7470726f63657373b00300007306000000000f10021a0163020000000200000002000000430000
*0073270000007c00006900006f1000017401006401008301008201006e0100017c01007c00005f
*020064020053280300000073d20300005365742074686520626173652070617468207768657265
*207265736f75726365732077696c6c2062652065787472616374656420746f2c206966206e6565
*6465642e0a0a2020202020202020496620796f7520646f206e6f742063616c6c20746869732072
*6f7574696e65206265666f726520616e792065787472616374696f6e732074616b6520706c6163
*652c207468650a2020202020202020706174682064656661756c747320746f2074686520726574
*75726e2076616c7565206f662060606765745f64656661756c745f6361636865282960602e2020
*2857686963680a20202020202020206973206261736564206f6e20746865206060505954484f4e
*5f4547475f4341434845606020656e7669726f6e6d656e74207661726961626c652c2077697468
*20766172696f75730a2020202020202020706c6174666f726d2d73706563696669632066616c6c
*6261636b732e2020536565207468617420726f7574696e65277320646f63756d656e746174696f
*6e20666f72206d6f72650a202020202020202064657461696c732e290a0a202020202020202052
*65736f7572636573206172652065787472616374656420746f207375626469726563746f726965
*73206f66207468697320706174682062617365642075706f6e0a2020202020202020696e666f72
*6d6174696f6e20676976656e20627920746865206060495265736f7572636550726f7669646572
*60602e2020596f75206d617920736574207468697320746f20610a202020202020202074656d70
*6f72617279206469726563746f72792c20627574207468656e20796f75206d7573742063616c6c
*206060636c65616e75705f7265736f75726365732829606020746f0a202020202020202064656c
*65746520746865206578747261637465642066696c6573207768656e20646f6e652e2020546865
*7265206973206e6f2067756172616e74656520746861740a20202020202020206060636c65616e
*75705f7265736f7572636573282960602077696c6c2062652061626c6520746f2072656d6f7665
*20616c6c206578747261637465642066696c65732e0a0a2020202020202020284e6f74653a2079
*6f75206d6179206e6f74206368616e6765207468652065787472616374696f6e20706174682066
*6f72206120676976656e207265736f757263650a20202020202020206d616e61676572206f6e63
*65207265736f75726365732068617665206265656e206578747261637465642c20756e6c657373
*20796f752066697273742063616c6c0a20202020202020206060636c65616e75705f7265736f75
*72636573282960602e290a2020202020202020733500000043616e2774206368616e6765206578
*7472616374696f6e20706174682c2066696c657320616c7265616479206578747261637465644e
*280300000052fb000000521800000052fe0000002802000000526300000052b300000028000000
*002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36
*6331346465766465762e6567675c706b675f7265736f75726365732e7079522e000000d9030000
*730800000000130a0103010d036302000000020000000100000043000000730400000064010053
*280200000073420200000a202020202020202044656c65746520616c6c20657874726163746564
*207265736f757263652066696c657320616e64206469726563746f726965732c2072657475726e
*696e672061206c6973740a20202020202020206f66207468652066696c6520616e642064697265
*63746f7279206e616d6573207468617420636f756c64206e6f7420626520737563636573736675
*6c6c792072656d6f7665642e0a2020202020202020546869732066756e6374696f6e20646f6573
*206e6f74206861766520616e7920636f6e63757272656e63792070726f74656374696f6e2c2073
*6f2069742073686f756c640a202020202020202067656e6572616c6c79206f6e6c792062652063
*616c6c6564207768656e207468652065787472616374696f6e207061746820697320612074656d
*706f726172790a20202020202020206469726563746f7279206578636c757369766520746f2061
*2073696e676c652070726f636573732e202054686973206d6574686f64206973206e6f740a2020
*2020202020206175746f6d61746963616c6c792063616c6c65643b20796f75206d757374206361
*6c6c206974206578706c696369746c79206f7220726567697374657220697420617320616e0a20
*20202020202020606061746578697460602066756e6374696f6e20696620796f75207769736820
*746f20656e7375726520636c65616e7570206f6620612074656d706f726172790a202020202020
*20206469726563746f7279207573656420666f722065787472616374696f6e732e0a2020202020
*2020204e2800000000280200000052630000007405000000666f72636528000000002800000000
*733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36633134646576
*6465762e6567675c706b675f7265736f75726365732e7079522f000000f303000073000000004e
*28000000002812000000526000000052650000005266000000521200000052fe00000052b60000
*005228000000522900000052260000005225000000522400000052270000005203010000520801
*0000520e010000522e0000005291000000522f000000280000000028000000002800000000733a
*000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465
*762e6567675c706b675f7265736f75726365732e7079523300000035030000731c000000060106
*010602090309040906090609060906090609290c290929091a6300000000060000000a00000043
*000000731e010000790f007400006901006401001953576e1300047402006a0a006f0700010101
*016e020001587400006903006402006a03006f1100017400006904006905006403008301005301
*6404007d00006410006411007c00006602006412007c00006602006413007c0000660200641500
*6416007c00006602006706007d0100789b007c0100445d87005c02007d02007d0300640b007d04
*007872007c0200445d37007d05007c05007400006901006a06006f200001740000690400690700
*7c04007400006901007c0500198302007d0400719c000150719c00577c03006f19000174000069
*04006907007c04007c03008302007d04006e0100017400006904006907007c0400640c00830200
*5371830057740800640d00830100820100640e00532817000000730c01000044657465726d696e
*65207468652064656661756c74206361636865206c6f636174696f6e0a0a202020205468697320
*72657475726e7320746865206060505954484f4e5f4547475f4341434845606020656e7669726f
*6e6d656e74207661726961626c652c206966207365742e0a202020204f74686572776973652c20
*6f6e2057696e646f77732c2069742072657475726e7320612022507974686f6e2d456767732220
*7375626469726563746f7279206f66207468650a20202020224170706c69636174696f6e204461
*746122206469726563746f72792e20204f6e20616c6c206f746865722073797374656d732c2069
*74277320227e2f2e707974686f6e2d65676773222e0a202020207410000000505954484f4e5f45
*47475f434143484574020000006e74730e0000007e2f2e707974686f6e2d656767737310000000
*4170706c69636174696f6e2044617461740700000041505044415441740b000000555345525052
*4f46494c457409000000484f4d4544524956457408000000484f4d45504154487404000000484f
*4d45740600000057494e4449527400000000730b000000507974686f6e2d456767737333000000
*506c65617365207365742074686520505954484f4e5f4547475f434143484520656e7669726f6d
*656e74207661726961626c654e2801000000730700000041505044415441280200000028010000
*007307000000415050444154414e2801000000730b0000005553455250524f46494c4528020000
*007309000000484f4d4544524956457308000000484f4d45504154482801000000730800000048
*4f4d455041544828010000007304000000484f4d45280200000028010000007304000000484f4d
*454e28010000005217010000280900000052760000007407000000656e7669726f6e526f000000
*520900000052b3000000740a000000657870616e647573657252120000005215000000740c0000
*0052756e74696d654572726f72280600000074080000006170705f646174617409000000617070
*5f686f6d657352c50000007406000000737562646972520b000000527f00000028000000002800
*000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36633134
*6465766465762e6567675c706b675f7265736f75726365732e7079523000000002040000733400
*0000000703010f010e010502100111020602030109010901090103010f0307000c010601070006
*011001200205020701190117020301630100000001000000040000004300000073130000007400
*006901006401006402007c0000830300532803000000738f000000436f6e7665727420616e2061
*726269747261727920737472696e6720746f2061207374616e6461726420646973747269627574
*696f6e206e616d650a0a20202020416e792072756e73206f66206e6f6e2d616c7068616e756d65
*7269632f2e206368617261637465727320617265207265706c6163656420776974682061207369
*6e676c6520272d272e0a20202020730e0000005b5e412d5a612d7a302d392e5d2b74010000002d
*280200000074020000007265740300000073756228010000005209000000280000000028000000
*00733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465
*766465762e6567675c706b675f7265736f75726365732e7079523e0000002b0400007302000000
*0005630100000001000000040000004300000073250000007c0000690000640100640200830200
*7d00007401006902006403006404007c000083030053280500000073cc000000436f6e76657274
*20616e2061726269747261727920737472696e6720746f2061207374616e646172642076657273
*696f6e20737472696e670a0a20202020537061636573206265636f6d6520646f74732c20616e64
*20616c6c206f74686572206e6f6e2d616c7068616e756d65726963206368617261637465727320
*6265636f6d650a202020206461736865732c20776974682072756e73206f66206d756c7469706c
*652064617368657320636f6e64656e73656420746f20612073696e676c6520646173682e0a2020
*20205287000000520e000000730e0000005b5e412d5a612d7a302d392e5d2b521f010000280300
*0000528c000000522001000052210100002801000000528e00000028000000002800000000733a
*000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465
*762e6567675c706b675f7265736f75726365732e7079523f000000330400007304000000000612
*01630100000001000000040000004300000073190000007400006901006401006402007c000083
*030069020083000053280300000073b1000000436f6e7665727420616e20617262697472617279
*20737472696e6720746f2061207374616e646172642027657874726127206e616d650a0a202020
*20416e792072756e73206f66206e6f6e2d616c7068616e756d6572696320636861726163746572
*7320617265207265706c61636564207769746820612073696e676c6520275f272c0a2020202061
*6e642074686520726573756c7420697320616c77617973206c6f77657263617365642e0a202020
*20730e0000005b5e412d5a612d7a302d392e5d2b52880000002803000000522001000052210100
*0052ee00000028010000007405000000657874726128000000002800000000733a000000433a5c
*7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c
*706b675f7265736f75726365732e707952440000003d0400007302000000000663010000000100
*0000030000004300000073100000007c0000690000640100640200830200532803000000737c00
*0000436f6e7665727420612070726f6a656374206f722076657273696f6e206e616d6520746f20
*6974732066696c656e616d652d6573636170656420666f726d0a0a20202020416e7920272d2720
*63686172616374657273206172652063757272656e746c79207265706c61636564207769746820
*275f272e0a20202020521f01000052880000002801000000528c00000028010000005209000000
*28000000002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c73
*2d302e366331346465766465762e6567675c706b675f7265736f75726365732e70795245000000
*4604000073020000000005630000000000000000010000004200000073c20000006500005a0100
*6400005a02006413005a04006413005a05006413005a06006401008400005a0700640200840000
*5a08006403008400005a09006404008400005a0a006405008400005a0b006406008400005a0c00
*6407008400005a0d006408008400005a0e006409008400005a0f00640a008400005a1000640b00
*8400005a1100640c008400005a1200640d008400005a1300640e008400005a1400640f00840000
*5a15006410008400005a16006411008400005a17006412008400005a1800525328140000007345
*00000054727920746f20696d706c656d656e74207265736f757263657320616e64206d65746164
*61746120666f72206172626974726172792050455020333032206c6f6164657273630200000002
*0000000500000043000000733a0000007400007c01006401006400008303007c00005f02007403
*006904006905007400007c01006402006403008303008301007c00005f06006400005328040000
*004e526a00000074080000005f5f66696c655f5f52180100002807000000527100000052120000
*005275000000527600000052b3000000520b000000740b0000006d6f64756c655f706174682802
*0000005263000000527400000028000000002800000000733a000000433a5c7461686f652d6c61
*66735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f
*75726365732e707952b60000005b04000073040000000001150163030000000300000003000000
*4300000073130000007c00006900007c00006901007c02008302005328010000004e2802000000
*74030000005f666e52240100002803000000526300000052a900000052aa000000280000000028
*00000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331
*346465766465762e6567675c706b675f7265736f75726365732e707952ab0000005f0400007302
*0000000001630300000003000000040000004300000073160000007400007c00006901007c0100
*7c02008302008301005328010000004e28020000007408000000537472696e67494f52ad000000
*2803000000526300000052a900000052aa00000028000000002800000000733a000000433a5c74
*61686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c70
*6b675f7265736f75726365732e707952ac00000062040000730200000000016303000000030000
*000400000043000000731c0000007c00006900007c00006901007c00006902007c020083020083
*01005328010000004e280300000074040000005f67657452250100005224010000280300000052
*6300000052a900000052aa00000028000000002800000000733a000000433a5c7461686f652d6c
*6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f726573
*6f75726365732e707952ad00000065040000730200000000016302000000020000000400000043
*000000731c0000007c00006900007c00006901007c00006902007c010083020083010053280100
*00004e280300000074040000005f686173522501000052240100002802000000526300000052aa
*00000028000000002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f
*6f6c732d302e366331346465766465762e6567675c706b675f7265736f75726365732e707952ae
*0000006804000073020000000001630200000002000000040000004300000073260000007c0000
*6900006f1c00017c00006901007c00006902007c00006900007c01008302008301005328010000
*004e280300000074080000006567675f696e666f52280100005225010000280200000052630000
*00520900000028000000002800000000733a000000433a5c7461686f652d6c6166735c73657475
*70746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f75726365732e70
*7952a30000006b040000730200000000016302000000020000000400000043000000732b000000
*7c00006900007005000164010053017c00006901007c00006902007c00006900007c0100830200
*8301005328020000004e5218010000280300000052290100005227010000522501000028020000
*005263000000520900000028000000002800000000733a000000433a5c7461686f652d6c616673
*5c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f7572
*6365732e707952a40000006e040000730600000000010a01050163020000000200000003000000
*4300000073130000007400007c00006901007c01008301008301005328010000004e2802000000
*524200000052a400000028020000005263000000520900000028000000002800000000733a0000
*00433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e
*6567675c706b675f7265736f75726365732e707952a50000007304000073020000000001630200
*0000020000000400000043000000731c0000007c00006900007c00006901007c00006902007c01
*008302008301005328010000004e280300000074060000005f6973646972522501000052240100
*002802000000526300000052aa00000028000000002800000000733a000000433a5c7461686f65
*2d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f72
*65736f75726365732e707952290000007604000073020000000001630200000002000000040000
*004300000073260000007c00006900006f1c00017c00006901007c00006902007c00006900007c
*01008302008301005328010000004e28030000005229010000522a010000522501000028020000
*005263000000520900000028000000002800000000733a000000433a5c7461686f652d6c616673
*5c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f7572
*6365732e707952a600000079040000730200000000016302000000020000000400000043000000
*731c0000007c00006900007c00006901007c00006902007c01008302008301005328010000004e
*280300000074080000005f6c697374646972522501000052240100002802000000526300000052
*aa00000028000000002800000000733a000000433a5c7461686f652d6c6166735c736574757074
*6f6f6c732d302e366331346465766465762e6567675c706b675f7265736f75726365732e707952
*270000007d040000730200000000016302000000020000000400000043000000732b0000007c00
*006900006f1d00017c00006901007c00006902007c00006900007c010083020083010053016700
*005328010000004e28030000005229010000522b01000052250100002802000000526300000052
*0900000028000000002800000000733a000000433a5c7461686f652d6c6166735c736574757074
*6f6f6c732d302e366331346465766465762e6567675c706b675f7265736f75726365732e707952
*a700000080040000730600000000010a011d01630300000008000000050000004200000073f600
*00006401007c0100177d03007c00006900007c0300830100701400016501006402007c01001683
*01008201006e0100017c00006902007c03008301006903006403006404008302007d04007c0400
*6903006405006404008302007d04007c00006904007c00006905007c03008302007d05007c0500
*7c02006406003c6506006907006908007c05008301006f1400016509007c05007c02007c020083
*0300016e5200016407006408006b0a006c0b007d060001650c007c04008301006409007c040069
*0d006404008301007c05006604007c06007c05003c650e007c04007c0500640a008303007d0700
*7c07007c02007c02005564000053280b0000004e7308000000736372697074732f73120000004e
*6f20736372697074206e616d656420257273020000000d0a73010000000a73010000000d522301
*000069ffffffff2801000000740500000063616368656900000000740400000065786563280f00
*000052a3000000523700000052a4000000528c00000052250100005229010000527600000052b3
*000000740600000065786973747374080000006578656366696c6574090000006c696e65636163
*6865522c01000074030000006c656e52070000007407000000636f6d70696c6528080000005263
*000000529d00000052a80000007406000000736372697074740b0000007363726970745f746578
*74740f0000007363726970745f66696c656e616d65522c010000740b0000007363726970745f63
*6f646528000000002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f
*6f6c732d302e366331346465766465762e6567675c706b675f7265736f75726365732e7079521d
*00000085040000731a00000000010a01100114011b01120115010a011301140210022502120163
*020000000200000002000000430000007310000000740000640100830100820100640000532802
*0000004e733900000043616e277420706572666f726d2074686973206f7065726174696f6e2066
*6f7220756e72656769737465726564206c6f616465722074797065280100000074130000004e6f
*74496d706c656d656e7465644572726f722802000000526300000052b300000028000000002800
*000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36633134
*6465766465762e6567675c706b675f7265736f75726365732e7079522801000097040000730400
*000000010301630200000002000000020000004300000073100000007400006401008301008201
*006400005328020000004e733900000043616e277420706572666f726d2074686973206f706572
*6174696f6e20666f7220756e72656769737465726564206c6f6164657220747970652801000000
*52370100002802000000526300000052b300000028000000002800000000733a000000433a5c74
*61686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c70
*6b675f7265736f75726365732e7079522a0100009c040000730400000000010301630200000002
*000000020000004300000073100000007400006401008301008201006400005328020000004e73
*3900000043616e277420706572666f726d2074686973206f7065726174696f6e20666f7220756e
*72656769737465726564206c6f6164657220747970652801000000523701000028020000005263
*00000052b300000028000000002800000000733a000000433a5c7461686f652d6c6166735c7365
*747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f7572636573
*2e7079522b010000a1040000730400000000010301630300000003000000040000004300000073
*280000007c02006f1d00017400006901006902007c01007c02006903006401008301008c010053
*017c01005328020000004e74010000002f2804000000527600000052b300000052150000005207
*0000002803000000526300000074040000006261736552aa00000028000000002800000000733a
*000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465
*762e6567675c706b675f7265736f75726365732e70795225010000a60400007306000000000107
*011d01630200000002000000030000004300000073340000007400007c00006901006401008302
*006f1100017c00006901006902007c010083010053017403006402008301008201006400005328
*030000004e74080000006765745f64617461733d00000043616e277420706572666f726d207468
*6973206f7065726174696f6e20666f72206c6f616465727320776974686f757420276765745f64
*61746128292728040000007407000000686173617474725275000000523a010000523701000028
*02000000526300000052b300000028000000002800000000733a000000433a5c7461686f652d6c
*6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f726573
*6f75726365732e70795227010000ab040000730800000000011301110103014e28190000005260
*00000052650000005266000000521200000074080000006567675f6e616d655229010000527500
*000052b600000052ab00000052ac00000052ad00000052ae00000052a300000052a400000052a5
*000000522900000052a6000000522700000052a7000000521d0000005228010000522a01000052
*2b01000052250100005227010000280000000028000000002800000000733a000000433a5c7461
*686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b
*675f7265736f75726365732e7079525400000054040000732c0000000601060206010601060209
*040903090309030903090309050903090309040903090509120905090509050905630000000000
*000000010000004200000073200000006500005a01006400005a02006401008400005a03006402
*008400005a040052532803000000732600000050726f7669646572206261736564206f6e206120
*7669727475616c2066696c6573797374656d6302000000020000000300000043000000731e0000
*007400006901007c00007c0100830200017c0000690200830000016400005328010000004e2803
*000000525400000052b6000000740d0000005f73657475705f7072656669782802000000526300
*0000527400000028000000002800000000733a000000433a5c7461686f652d6c6166735c736574
*7570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f75726365732e
*707952b6000000b804000073040000000001100163010000000400000003000000430000007397
*0000007c00006900007d01006400007d02007881007c01007c02006a03006f7300017c01006902
*008300006903006401008301006f3b00017404006905006906007c01008301007c00005f070074
*04006905006908007c01006402008302007c00005f09007c01007c00005f0a00506e0100017c01
*007d0200740400690500690b007c01008301005c02007d01007d03007112000157640000532803
*0000004e73040000002e65676773080000004547472d494e464f280c0000005224010000521200
*000052ee0000007408000000656e647377697468527600000052b3000000740800000062617365
*6e616d65523c0100005215000000522901000074080000006567675f726f6f7452070000002804
*000000526300000052b300000074030000006f6c64523901000028000000002800000000733a00
*0000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36633134646576646576
*2e6567675c706b675f7265736f75726365732e7079523d010000bc040000731600000000030901
*060103000d01160115011801090105010601280500000052600000005265000000526600000052
*b6000000523d010000280000000028000000002800000000733a000000433a5c7461686f652d6c
*6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f726573
*6f75726365732e70795255000000b5040000730600000006010602090463000000000000000001
*00000042000000733b0000006500005a01006400005a02006401008400005a0300640200840000
*5a04006403008400005a05006404008400005a06006405008400005a0700525328060000007336
*00000050726f76696465732061636365737320746f207061636b616765207265736f7572636573
*20696e207468652066696c6573797374656d630200000002000000020000004300000073100000
*007400006901006902007c01008301005328010000004e2803000000527600000052b300000052
*2e0100002802000000526300000052b300000028000000002800000000733a000000433a5c7461
*686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b
*675f7265736f75726365732e70795228010000d204000073020000000001630200000002000000
*020000004300000073100000007400006901006902007c01008301005328010000004e28030000
*00527600000052b300000052060000002802000000526300000052b30000002800000000280000
*0000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663313464
*65766465762e6567675c706b675f7265736f75726365732e7079522a010000d504000073020000
*0000016302000000020000000200000043000000730d0000007400006901007c01008301005328
*010000004e2802000000527600000074070000006c6973746469722802000000526300000052b3
*00000028000000002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f
*6f6c732d302e366331346465766465762e6567675c706b675f7265736f75726365732e7079522b
*010000d8040000730200000000016303000000030000000400000043000000731c000000740000
*7c00006901007c00006902007c02008302006401008302005328020000004e7402000000726228
*030000005205000000522501000052240100002803000000526300000052a900000052aa000000
*28000000002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c73
*2d302e366331346465766465762e6567675c706b675f7265736f75726365732e707952ac000000
*db040000730200000000016302000000030000000500000043000000732f0000007400007c0100
*6401008302007d02007a0e007c020069010083000053576400007c020069020083000001586400
*005328020000004e52430100002803000000520500000052780000007405000000636c6f736528
*03000000526300000052b3000000740600000073747265616d28000000002800000000733a0000
*00433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e
*6567675c706b675f7265736f75726365732e70795227010000de040000730800000000010f0103
*010e0228080000005260000000526500000052660000005228010000522a010000522b01000052
*ac0000005227010000280000000028000000002800000000733a000000433a5c7461686f652d6c
*6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f726573
*6f75726365732e70795256000000cf040000730c00000006010602090309030903090363000000
*00000000000200000042000000733c0000006500005a01006400005a0200640100840000045a03
*005a04006402008400005a05006403008400005a06006405005a08006404008400005a09005253
*2806000000732e00000050726f766964657220746861742072657475726e73206e6f7468696e67
*20666f7220616c6c20726571756573747363020000000200000001000000430000007304000000
*740000532800000000280100000052910000002802000000526300000052b30000002800000000
*2800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663
*31346465766465762e6567675c706b675f7265736f75726365732e707974080000003c6c616d62
*64613eeb0400007300000000630200000002000000010000004300000073040000006400005328
*01000000521801000028000000002802000000526300000052b300000028000000002800000000
*733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36633134646576
*6465762e6567675c706b675f7265736f75726365732e70795246010000ec040000730000000063
*020000000200000001000000430000007304000000670000532800000000280000000028020000
*00526300000052b300000028000000002800000000733a000000433a5c7461686f652d6c616673
*5c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f7572
*6365732e70795246010000ed040000730000000063010000000100000001000000430000007304
*0000006400005328010000004e2800000000280100000052630000002800000000280000000073
*3a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663313464657664
*65762e6567675c706b675f7265736f75726365732e707952b6000000f004000073020000000001
*4e280a000000526000000052650000005266000000522a01000052280100005227010000522b01
*00005212000000522401000052b6000000280000000028000000002800000000733a000000433a
*5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e656767
*5c706b675f7265736f75726365732e70795252000000e8040000730c000000060106020d010901
*09010602630000000000000000010000004200000073800000006500005a01006400005a020064
*0d005a04006401008400005a05006402008400005a06006403008400005a07006404008400005a
*08006405008400005a09006406008400005a0a006407008400005a0b006408008400005a0c0064
*09008400005a0d00640a008400005a0e00640b008400005a0f00640c008400005a10005253280e
*00000073220000005265736f7572636520737570706f727420666f72207a69707320616e642065
*676773630200000002000000030000004300000073400000007400006901007c00007c01008302
*00017402006903007c0000690400690500197c00005f06007c0000690400690500740700690800
*177c00005f09006400005328010000004e280a000000525500000052b600000074090000007a69
*70696d706f727474140000005f7a69705f6469726563746f72795f636163686552750000007407
*0000006172636869766574070000007a6970696e666f5276000000740300000073657074070000
*007a69705f70726528020000005263000000527400000028000000002800000000733a00000043
*3a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567
*675c706b675f7265736f75726365732e707952b6000000fd040000730600000000011001160163
*0200000002000000050000004300000073420000007c01006900007c00006901008301006f1200
*017c01007402007c00006901008301001f53017403006401007c01007c00006901006602001683
*01008201006400005328020000004e73190000002573206973206e6f7420612073756270617468
*206f662025732804000000528a000000524c0100005231010000740e000000417373657274696f
*6e4572726f7228020000005263000000740600000066737061746828000000002800000000733a
*000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465
*762e6567675c706b675f7265736f75726365732e7079740d0000005f7a6970696e666f5f6e616d
*650205000073080000000003130112010301630200000003000000050000004300000073660000
*007c00006900007c0100177d02007c02006901007c0000690200740300690400178301006f2200
*017c02007405007c0000690200830100640100171f690600740300690400830100530174070064
*02007c02007c0000690200660200168301008201006400005328030000004e6901000000731900
*00002573206973206e6f7420612073756270617468206f662025732808000000524c010000528a
*00000052400100005276000000524b01000052310100005207000000524d010000280300000052
*6300000074080000007a69705f70617468524e01000028000000002800000000733a000000433a
*5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e656767
*5c706b675f7265736f75726365732e707974060000005f70617274730b050000730a0000000002
*0d011a0122010301630300000006000000050000004300000073920000007c0000690000701000
*017401006401008301008201006e0100017c00006902007c02008301007d03007c000069030083
*00007d04006402006904007c00006905007c03008301008301007c04006a06006f2e0001782b00
*7c0400445d1f007d05007c00006906007c01007c00006907007c050083010083020001715b0057
*6e0100017c00006906007c01007c03008302005328030000004e73350000007265736f75726365
*5f66696c656e616d652829206f6e6c7920737570706f7274656420666f72202e6567672c206e6f
*74202e7a697052380100002808000000523c010000523701000074100000005f7265736f757263
*655f746f5f7a697074140000005f6765745f65616765725f7265736f7572636573521500000052
*5101000074110000005f657874726163745f7265736f75726365740d0000005f65616765725f74
*6f5f7a69702806000000526300000052a900000052aa0000005250010000740600000065616765
*7273520900000028000000002800000000733a000000433a5c7461686f652d6c6166735c736574
*7570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f75726365732e
*707952ab00000014050000731400000000010a0103010d030f010c011f01070006012101630300
*00000f0000000b0000004300000073910200007c02007c00006900008300006a06006f4d000178
*39007c00006900008300007c020019445d27007d03007c00006901007c01007402006903006904
*007c02007c03008302008302007d0400712400577402006903006905007c040083010053017c00
*006906007c0200197d05007c0500640100197c0500640200197c05006403001903027d06007d07
*007d08007c07006404003f640500177c07006401003f640600407c0700640700407c0600640800
*406409003f7c06006401003f640a00407c060064070040640b0014640c00640c00640d00660900
*7d09007407006908007c09008301007d0a007981017c01006909007c0000690a007c0000690b00
*7c02008301008302007d0b00740200690300690c007c0b008301006f380001740200690d007c0b
*008301007d0c007c0c00690e007c08006a02006f1500017c0c00690f007c0a006a02006f050001
*7c0b0053016e010001741000640e00640f007402006903006905007c0b008301008301015c0200
*7d0d007d0e007402006911007c0d007c00006912006913007c0200830100830200017402006914
*007c0d00830100017415007c0e007c0a007c0a00660200830200017c01006916007c0e007c0b00
*830200017911007417007c0e007c0b0083020001576e9000047402006918006a0a006f81000101
*0101740200690300690c007c0b008301006f640001740200690d007c0b008301007d0c007c0c00
*690e007c08006a02006f1500017c0c00690f007c0a006a02006f0500017c0b0053017402006919
*006410006a02006f1c0001741a007c0b00830100017417007c0e007c0b00830200017c0b005301
*6e0100018200006e02000158576e2000047402006918006a0a006f1100010101017c0100691b00
*830000016e020001587c0b005328110000004e6905000000690600000069030000006909000000
*69bc070000690f000000691f00000069ffff0000690b000000693f000000690200000069000000
*0069ffffffff73090000002e246578747261637474030000006469725211010000281c00000074
*060000005f696e6465785254010000527600000052b30000005215000000520b000000524a0100
*00740400000074696d6574060000006d6b74696d655208010000523c0100005251010000740600
*0000697366696c65520a010000740700000073745f73697a65740800000073745f6d74696d6574
*080000005f6d6b7374656d70740500000077726974655275000000523a01000052440100005201
*000000520e010000520200000074050000006572726f7252090000005203000000520301000028
*0f000000526300000052a90000005250010000520900000074040000006c61737474080000007a
*69705f73746174740100000074740100000064740400000073697a657409000000646174655f74
*696d65740900000074696d657374616d7074090000007265616c5f70617468520a010000740400
*00006f7574667406000000746d706e616d28000000002800000000733a000000433a5c7461686f
*652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f
*7265736f75726365732e7079525401000021050000734c000000000213011100060106011f0211
*020d0120021d0130020f0203010601180313010f012002090224011c010d011301100203011102
*110113010f022003050110010a010d0109010c0211010f02630100000003000000040000004300
*000073650000007c00006900006400006a08006f4e00016700007d0100783800640300445d3000
*7d02007c00006902007c02008301006f1a00017c01006903007c00006904007c02008301008301
*0001711d0001711d00577c01007c00005f00006e0100017c00006900005328040000004e730f00
*00006e61746976655f6c6962732e747874731300000065616765725f7265736f75726365732e74
*78742802000000730f0000006e61746976655f6c6962732e747874731300000065616765725f72
*65736f75726365732e74787428050000005256010000521200000052a300000052ca00000052a5
*000000280300000052630000005256010000520900000028000000002800000000733a00000043
*3a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567
*675c706b675f7265736f75726365732e7079525301000059050000731000000000011001060107
*00060110011e010d01630100000005000000050000004300000073ba000000790b007c00006900
*0053576ea800047401006a0a006f9c00010101016800007d01007882007c0000690200445d7700
*7d02007c02006903007404006905008301007d0300785c007c03006f5400017404006905006906
*007c0300640100208301007d04007c04007c01006a06006f1a00017c01007c0400196907007c03
*00640100198301000150714700017c03006908008300006701007c01007c04003c714700015771
*2c00577c01007c00005f00007c01005301586400005328020000004e69ffffffff280900000074
*090000005f646972696e646578740e0000004174747269627574654572726f72524a0100005207
*0000005276000000524b0100005215000000527a00000052c80000002805000000526300000074
*03000000696e6452b3000000740500000070617274737406000000706172656e74280000000028
*00000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331
*346465766465762e6567675c706b675f7265736f75726365732e70795258010000620500007320
*000000000103010b010e0106010a00060112010300070116010d01150105021c01090163020000
*00030000000200000043000000732f0000007c00006900007c01008301007d02007c02007c0000
*6901006a0600701000017c02007c00006902008300006a06005328010000004e2803000000524f
*010000524a010000525801000028030000005263000000524e0100005250010000280000000028
*00000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331
*346465766465762e6567675c706b675f7265736f75726365732e70795228010000730500007304
*00000000010f01630200000002000000020000004300000073190000007c00006900007c010083
*01007c00006901008300006a06005328010000004e2802000000524f0100005258010000280200
*00005263000000524e01000028000000002800000000733a000000433a5c7461686f652d6c6166
*735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f75
*726365732e7079522a010000770500007302000000000163020000000200000004000000430000
*0073250000007400007c00006901008300006902007c00006903007c0100830100640100830200
*8301005328020000004e2800000000280400000052c700000052580100005284000000524f0100
*0028020000005263000000524e01000028000000002800000000733a000000433a5c7461686f65
*2d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f72
*65736f75726365732e7079522b0100007a05000073020000000001630200000002000000040000
*0043000000731c0000007c00006900007c00006901007c00006902007c01008302008301005328
*010000004e2803000000524f010000522501000052400100002802000000526300000052aa0000
*0028000000002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c
*732d302e366331346465766465762e6567675c706b675f7265736f75726365732e707952550100
*007d050000730200000000016302000000020000000400000043000000731c0000007c00006900
*007c00006901007c00006902007c01008302008301005328010000004e2803000000524f010000
*522501000052240100002802000000526300000052aa00000028000000002800000000733a0000
*00433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e
*6567675c706b675f7265736f75726365732e7079525201000080050000730200000000014e2811
*0000005260000000526500000052660000005212000000525601000052b6000000524f01000052
*5101000052ab0000005254010000525301000052580100005228010000522a010000522b010000
*52550100005252010000280000000028000000002800000000733a000000433a5c7461686f652d
*6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265
*736f75726365732e70795257000000f8040000731c000000060106020602090509090909090d09
*38090909110904090309030903630000000000000000010000004200000073320000006500005a
*01006400005a02006401008400005a03006402008400005a04006403008400005a050064040084
*00005a060052532805000000732a0100004d657461646174612068616e646c657220666f722073
*74616e64616c6f6e6520504b472d494e464f2066696c65730a0a2020202055736167653a3a0a0a
*20202020202020206d65746164617461203d2046696c654d6574616461746128222f706174682f
*746f2f504b472d494e464f22290a0a20202020546869732070726f76696465722072656a656374
*7320616c6c206461746120616e64206d6574616461746120726571756573747320657863657074
*20666f7220504b472d494e464f2c0a202020207768696368206973207472656174656420617320
*6578697374696e672c20616e642077696c6c2062652074686520636f6e74656e7473206f662074
*68652066696c652061740a202020207468652070726f7669646564206c6f636174696f6e2e0a20
*2020206302000000020000000200000043000000730d0000007c01007c00005f00006400005328
*010000004e280100000052b30000002802000000526300000052b3000000280000000028000000
*00733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465
*766465762e6567675c706b675f7265736f75726365732e707952b6000000a80500007302000000
*00016302000000020000000200000043000000730a0000007c01006401006a0200532802000000
*4e7308000000504b472d494e464f28000000002802000000526300000052090000002800000000
*2800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663
*31346465766465762e6567675c706b675f7265736f75726365732e707952a3000000ab05000073
*020000000001630200000002000000030000004300000073340000007c01006401006a02006f17
*00017400007c000069010064020083020069020083000053017403006403008301008201006400
*005328040000004e7308000000504b472d494e464f7402000000725573280000004e6f206d6574
*61646174612065786365707420504b472d494e464f20697320617661696c61626c652804000000
*520500000052b30000005278000000526f00000028020000005263000000520900000028000000
*002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36
*6331346465766465762e6567675c706b675f7265736f75726365732e707952a4000000ae050000
*730600000000010d011701630200000002000000030000004300000073130000007400007c0000
*6901007c01008301008301005328010000004e2802000000524200000052a40000002802000000
*5263000000520900000028000000002800000000733a000000433a5c7461686f652d6c6166735c
*7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f757263
*65732e707952a5000000b305000073020000000001280700000052600000005265000000526600
*000052b600000052a300000052a400000052a5000000280000000028000000002800000000733a
*000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465
*762e6567675c706b675f7265736f75726365732e7079524f0000009c050000730a000000060a06
*02090309030905630000000000000000010000004200000073170000006500005a01006400005a
*02006401008400005a03005253280200000073710200004d657461646174612070726f76696465
*7220666f7220656767206469726563746f726965730a0a2020202055736167653a3a0a0a202020
*20202020202320446576656c6f706d656e7420656767733a0a0a20202020202020206567675f69
*6e666f203d20222f706174682f746f2f5061636b6167654e616d652e6567672d696e666f220a20
*20202020202020626173655f646972203d206f732e706174682e6469726e616d65286567675f69
*6e666f290a20202020202020206d65746164617461203d20506174684d65746164617461286261
*73655f6469722c206567675f696e666f290a2020202020202020646973745f6e616d65203d206f
*732e706174682e73706c6974657874286f732e706174682e626173656e616d65286567675f696e
*666f29295b305d0a202020202020202064697374203d20446973747269627574696f6e28626173
*656469722c70726f6a6563745f6e616d653d646973745f6e616d652c6d657461646174613d6d65
*746164617461290a0a20202020202020202320556e7061636b656420656767206469726563746f
*726965733a0a0a20202020202020206567675f70617468203d20222f706174682f746f2f506163
*6b6167654e616d652d7665722d70797665722d6574632e656767220a20202020202020206d6574
*6164617461203d20506174684d65746164617461286567675f706174682c206f732e706174682e
*6a6f696e286567675f706174682c274547472d494e464f2729290a202020202020202064697374
*203d20446973747269627574696f6e2e66726f6d5f66696c656e616d65286567675f706174682c
*206d657461646174613d6d65746164617461290a20202020630300000003000000020000004300
*000073160000007c01007c00005f00007c02007c00005f01006400005328010000004e28020000
*00522401000052290100002803000000526300000052b300000052290100002800000000280000
*0000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663313464
*65766465762e6567675c706b675f7265736f75726365732e707952b6000000d905000073040000
*0000010901280400000052600000005265000000526600000052b6000000280000000028000000
*002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36
*6331346465766465762e6567675c706b675f7265736f75726365732e70795250000000c5050000
*730400000006120602630000000000000000010000004200000073170000006500005a01006400
*005a02006401008400005a03005253280200000073200000004d657461646174612070726f7669
*64657220666f72202e6567672066696c6573630200000002000000030000004300000073750000
*007400006901007c0100690200197c00005f03007c0100690200740400690500177c00005f0600
*7c01007c00005f07007c01006908006f220001740400690900690a007c01006902007c01006908
*008302007c00005f0b006e0d00017c01006902007c00005f0b007c0000690c0083000001640100
*532802000000732d0000004372656174652061206d657461646174612070726f76696465722066
*726f6d2061207a6970696d706f727465724e280d00000052470100005248010000524901000052
*4a0100005276000000524b010000524c0100005275000000740600000070726566697852b30000
*0052150000005224010000523d010000280200000052630000007408000000696d706f72746572
*28000000002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c73
*2d302e366331346465766465762e6567675c706b675f7265736f75726365732e707952b6000000
*e1050000730e00000000031301130109010a0122020c0128040000005260000000526500000052
*6600000052b6000000280000000028000000002800000000733a000000433a5c7461686f652d6c
*6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f726573
*6f75726365732e70795251000000de050000730400000006010602740a000000496d7057726170
*706572630000000000000000020000004200000073260000006500005a01006400005a02006403
*006401008401005a04006403006402008401005a050052532804000000733e0000005045502033
*303220496d706f72746572207468617420777261707320507974686f6e277320226e6f726d616c
*2220696d706f727420616c676f726974686d6302000000020000000200000043000000730d0000
*007c01007c00005f00006400005328010000004e280100000052b3000000280200000052630000
*0052b300000028000000002800000000733a000000433a5c7461686f652d6c6166735c73657475
*70746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f75726365732e70
*7952b6000000f105000073020000000001630300000007000000070000004300000073a1000000
*7c0100690000640100830100640200197d03007c03007c01006a03006f1500017c000069010064
*00006a08006f05000164000053017c00006901006400006a08006f0a00016400007d02006e0d00
*017c00006901006701007d0200791f007403006904007c03007c02008302005c03007d04007d05
*007d0600576e1400047405006a0a006f0800010101016400005301587406007c04007c05007c06
*008303005328030000004e520e00000069ffffffff2807000000520700000052b3000000521200
*00007403000000696d70740b00000066696e645f6d6f64756c65740b000000496d706f72744572
*726f727409000000496d704c6f6164657228070000005263000000740800000066756c6c6e616d
*6552b300000074070000007375626e616d65740400000066696c65520c00000074030000006574
*6328000000002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c
*732d302e366331346465766465762e6567675c706b675f7265736f75726365732e707952750100
*00f40500007316000000000113011d01050110010a020c0103011f010e0106014e280600000052
*6000000052650000005266000000521200000052b6000000527501000028000000002800000000
*2800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663
*31346465766465762e6567675c706b675f7265736f75726365732e70795273010000ee05000073
*06000000060106020c035277010000630000000000000000010000004200000073200000006500
*005a01006400005a02006401008400005a03006402008400005a040052532803000000733c0000
*0050455020333032204c6f61646572207468617420777261707320507974686f6e277320226e6f
*726d616c2220696d706f727420616c676f726974686d6304000000040000000200000043000000
*731f0000007c01007c00005f00007c02007c00005f01007c03007c00005f020064000053280100
*00004e2803000000527a010000520c000000527b01000028040000005263000000527a01000052
*0c000000527b01000028000000002800000000733a000000433a5c7461686f652d6c6166735c73
*65747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f75726365
*732e707952b6000000060600007306000000000109010901630200000003000000080000004300
*000073480000007a25007400006901007c01007c00006902007c00006903007c00006904008304
*007d0200576400007c00006902006f1100017c0000690200690500830000016e010001587c0200
*5328010000004e28060000005274010000740b0000006c6f61645f6d6f64756c65527a01000052
*0c000000527b010000524401000028030000005263000000527801000074030000006d6f642800
*0000002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d30
*2e366331346465766465762e6567675c706b675f7265736f75726365732e7079527c0100000b06
*0000730a0000000001030125020a001203280500000052600000005265000000526600000052b6
*000000527c010000280000000028000000002800000000733a000000433a5c7461686f652d6c61
*66735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f
*75726365732e707952770100000306000073060000000601060209056301000000030000000800
*00004300000073b60000007911007400006901007c0000197d0100576e5400047402006a0a006f
*480001010101784300740000690300445d2d007d02007910007c02007c00008301007d0100576e
*1300047404006a0a006f070001010101712c00015850712c00576401007d01006e020001587400
*006901006906007c00007c0100830200017c01006401006a08006f2a00017910007407007c0000
*8301007d01005771b200047404006a0a006f07000101010171b20001586e0100017c0100532802
*00000073e40000005265747269657665206120504550203330322022696d706f72746572222066
*6f722074686520676976656e2070617468206974656d0a0a202020204966207468657265206973
*206e6f20696d706f727465722c20746869732072657475726e7320612077726170706572206172
*6f756e6420746865206275696c74696e20696d706f72740a202020206d616368696e6572792e20
*205468652072657475726e656420696d706f72746572206973206f6e6c79206361636865642069
*6620697420776173206372656174656420627920610a202020207061746820686f6f6b2e0a2020
*20204e280800000052130000007413000000706174685f696d706f727465725f6361636865526f
*000000740a000000706174685f686f6f6b735276010000521200000052b7000000527301000028
*030000007409000000706174685f6974656d52720100007404000000686f6f6b28000000002800
*000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36633134
*6465766465762e6567675c706b675f7265736f75726365732e7079525c00000017060000732400
*00000007030111010e010a000601030110010e01050205020b0213010d01030110010e01090163
*02000000020000000300000043000000730e0000007c01007400007c00003c6401005328020000
*00737801000052656769737465722060646973747269627574696f6e5f66696e6465726020746f
*2066696e6420646973747269627574696f6e7320696e207379732e70617468206974656d730a0a
*2020202060696d706f727465725f7479706560206973207468652074797065206f7220636c6173
*73206f66206120504550203330322022496d706f727465722220287379732e7061746820697465
*6d0a2020202068616e646c6572292c20616e642060646973747269627574696f6e5f66696e6465
*726020697320612063616c6c61626c6520746861742c20706173736564206120706174680a2020
*20206974656d20616e642074686520696d706f7274657220696e7374616e63652c207969656c64
*73206060446973747269627574696f6e606020696e7374616e63657320666f756e64206f6e0a20
*202020746861742070617468206974656d2e2020536565206060706b675f7265736f7572636573
*2e66696e645f6f6e5f70617468606020666f7220616e206578616d706c652e4e28010000007415
*0000005f646973747269627574696f6e5f66696e646572732802000000740d000000696d706f72
*7465725f747970657413000000646973747269627574696f6e5f66696e64657228000000002800
*000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36633134
*6465766465762e6567675c706b675f7265736f75726365732e7079525800000042060000730200
*000000076302000000040000000400000043000000732b0000007400007c00008301007d020074
*01007402007c02008302007d03007c03007c02007c00007c0100830300532801000000732e0000
*005969656c6420646973747269627574696f6e732061636365737369626c652076696120607061
*74685f6974656d602803000000525c000000527200000052820100002804000000528001000074
*040000006f6e6c795272010000740600000066696e64657228000000002800000000733a000000
*433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e65
*67675c706b675f7265736f75726365732e7079522d0000004c060000730600000000020c010f01
*630300000007000000040000006300000073af0000007400007c00008301007d03007c03006901
*006401008301006f1800017402006903007c01006402007c030083010156016e0100017c02006f
*05000164000053017868007c0300690400640300830100445d57007d04007c0400690500640400
*8301006f4100017406006907006908007c01007c04008302007d0500782900740900740a00690b
*007c05008301007c0500830200445d0b007d06007c060056017194005771500001715000576400
*005328050000004e7308000000504b472d494e464f74080000006d657461646174615238010000
*73040000002e656767280c000000525100000052a30000005234000000740d00000066726f6d5f
*66696c656e616d655227000000523e010000527600000052b30000005215000000740b00000066
*696e645f696e5f7a69705247010000740b0000007a6970696d706f727465722807000000527201
*000052800100005285010000528701000074070000007375626974656d74070000007375627061
*746852a200000028000000002800000000733a000000433a5c7461686f652d6c6166735c736574
*7570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f75726365732e
*7079528901000052060000731800000000010c0110011801070105011000060110011501190006
*01630000000002000000070000004f00000073470000007914006401006402006b00006c010061
*010001576e2300047402006a0a006f1700010101016401006402006b01006c0100610100016e02
*0001587401007c00007c01008e000053280300000073290000005468756e6b20746f206c6f6164
*20746865207265616c20537472696e67494f206f6e2064656d616e6469ffffffff280100000052
*260100002803000000740900000063537472696e67494f52260100005276010000280200000052
*6200000074020000006b7728000000002800000000733a000000433a5c7461686f652d6c616673
*5c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f7572
*6365732e7079522601000060060000730a0000000003030114010e011501630300000003000000
*010000004300000073040000006401005328020000004e28000000002800000000280300000052
*720100005280010000528501000028000000002800000000733a000000433a5c7461686f652d6c
*6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f726573
*6f75726365732e7079740c00000066696e645f6e6f7468696e6769060000730200000000016303
*0000000a000000080000006300000073d70100007400007c01008301007d010074010069020069
*03007c01008301006fb401017c01006904008300006905006401008301006f3000017406006907
*007c01006402007408007c01007401006902006909007c01006403008302008302008301015601
*71d30101786b01740100690a007c0100830100445d56017d03007c03006904008300007d04007c
*04006905006404008301006f6500017401006902006909007c01007c03008302007d0500740100
*6902006903007c05008301006f1300017408007c01007c05008302007d06006e0d0001740b007c
*05008301007d0600740600690c007c01007c03007c0600640500740d008303015601717500017c
*02000c6f3f00017c04006905006401008301006f2f000178b400740e007401006902006909007c
*01007c0300830200830100445d0b007d07007c0700560171300157717500017c02000c6f800001
*7c04006905006406008301006f700001786d00740f007401006902006909007c01007c03008302
*00830100445d4c007d08007c0800691000830000700700017177016e010001782e00740e007401
*006902006909007c01007c0800691100830000830200830100445d0b007d09007c0900560171b3
*0157507177015771750001717500576e01000164070053280800000073360000005969656c6420
*646973747269627574696f6e732061636365737369626c65206f6e2061207379732e7061746820
*6469726563746f727973040000002e656767528701000073080000004547472d494e464f730900
*00002e6567672d696e666f740a000000707265636564656e636573090000002e6567672d6c696e
*6b4e281200000074110000005f6e6f726d616c697a655f636163686564527600000052b3000000
*520600000052ee000000523e010000523400000052880100005250000000521500000052420100
*00524f000000740d00000066726f6d5f6c6f636174696f6e524c000000522d000000527a010000
*527b0000007406000000727374726970280a00000052720100005280010000528501000052b500
*000052ee000000740800000066756c6c70617468528701000052a2000000527e00000052bf0000
*0028000000002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c
*732d302e366331346465766465762e6567675c706b675f7265736f75726365732e7079740c0000
*0066696e645f6f6e5f706174686d060000733a00000000020c0213011602060109012105100006
*010c0110011501130213020c010601180218011c0006010d0118011c0006010d00070122000601
*09016302000000020000000300000043000000730e0000007c01007400007c00003c6401005328
*020000007397020000526567697374657220606e616d6573706163655f68616e646c6572602074
*6f206465636c617265206e616d657370616365207061636b616765730a0a2020202060696d706f
*727465725f7479706560206973207468652074797065206f7220636c617373206f662061205045
*50203330322022496d706f727465722220287379732e70617468206974656d0a2020202068616e
*646c6572292c20616e6420606e616d6573706163655f68616e646c65726020697320612063616c
*6c61626c65206c696b6520746869733a3a0a0a2020202020202020646566206e616d6573706163
*655f68616e646c657228696d706f727465722c706174685f656e7472792c6d6f64756c654e616d
*652c6d6f64756c65293a0a202020202020202020202020232072657475726e206120706174685f
*656e74727920746f2075736520666f72206368696c64207061636b616765730a0a202020204e61
*6d6573706163652068616e646c65727320617265206f6e6c792063616c6c656420696620746865
*20696d706f72746572206f626a6563742068617320616c72656164790a20202020616772656564
*20746861742069742063616e2068616e646c65207468652072656c6576616e7420706174682069
*74656d2c20616e6420746865792073686f756c64206f6e6c790a2020202072657475726e206120
*7375627061746820696620746865206d6f64756c65205f5f706174685f5f20646f6573206e6f74
*20616c726561647920636f6e7461696e20616e0a202020206571756976616c656e742073756270
*6174682e2020466f7220616e206578616d706c65206e616d6573706163652068616e646c65722c
*207365650a202020206060706b675f7265736f75726365732e66696c655f6e735f68616e646c65
*7260602e0a202020204e280100000074130000005f6e616d6573706163655f68616e646c657273
*2802000000528301000074110000006e616d6573706163655f68616e646c657228000000002800
*000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36633134
*6465766465762e6567675c706b675f7265736f75726365732e7079525900000095060000730200
*0000000f630200000008000000050000004300000073170100007400007c01008301007d02007c
*02006403006a08006f05000164030053017c02006902007c00008301007d03007c03006403006a
*08006f05000164030053017403006904006905007c00008301007d04007c04006403006a08006f
*3100017406006907007c0000830100047d04007403006904007c00003c6700007c04005f080074
*09007c0000830100016e240001740a007c040064010083020070130001740b006402007c000083
*02008201006e010001740c00740d007c02008302007d05007c05007c02007c01007c00007c0400
*8304007d06007c06006403006a09006f3000017c04006908007d07007c0700690e007c06008301
*00017c0300690f007c0000830100017c07007c04005f08006e0100017c06005328040000007345
*000000456e737572652074686174206e616d6564207061636b61676520696e636c756465732061
*2073756270617468206f6620706174685f6974656d20286966206e65656465642974080000005f
*5f706174685f5f730e0000004e6f742061207061636b6167653a4e2810000000525c0000005212
*00000052750100005213000000526e000000528400000052f80000005274000000529801000074
*0e0000005f7365745f706172656e745f6e73523b01000052a10000005272000000529601000052
*7a000000527c0100002808000000740b0000007061636b6167654e616d65528001000052720100
*0052750000005274000000740700000068616e646c6572528c01000052b3000000280000000028
*00000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331
*346465766465762e6567675c706b675f7265736f75726365732e7079740a0000005f68616e646c
*655f6e73a6060000732a00000000020c010d0105010f010d01050112010d011a0109000e011001
*13010f0115010d0109000d010d000d016301000000040000000b00000043000000730301000074
*0000690100830000017ae7007c00007402006a06006f0500016401005301740300690400640100
*027d01007d02006402007c00006a06006f6d00016402006906007c000069070064020083010064
*0300208301007d02007408007c0200830100017409007c020083010001791400740300690a007c
*020019690b007d01005771a90004740c006a0a006f160001010101740d006404007c0200830200
*82010071a90001586e010001740200690e007c0200670000830200690f007c0000830100017402
*00690e007c000067000083020001781b007c0100445d13007d03007410007c00007c0300830200
*0171d9005757640100740000691100830000015864010053280500000073390000004465636c61
*72652074686174207061636b61676520277061636b6167654e616d65272069732061206e616d65
*7370616365207061636b6167654e520e00000069ffffffff730e0000004e6f742061207061636b
*6167653a28120000005274010000740c000000616371756972655f6c6f636b74130000005f6e61
*6d6573706163655f7061636b61676573521300000052b300000052120000005215000000520700
*0000522a0000005270000000526e0000005298010000526c01000052a100000052b7000000527a
*000000529c010000740c00000072656c656173655f6c6f636b2804000000529a01000052b30000
*00526f010000528001000028000000002800000000733a000000433a5c7461686f652d6c616673
*5c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f7572
*6365732e7079522a000000bb060000732600000000030a0103010d01050210010d011c010a010a
*01030114010e011804190110020700060315036302000000040000000700000043000000736400
*0000740000690100830000017a48007841007402006903007c0100640200830200445d2d007d02
*007404007c02007c00008302007d03007c03006f1100017405007c03007c020083020001712000
*01712000575764010074000069060083000001586401005328030000007344000000456e737572
*6520746861742070726576696f75736c792d6465636c61726564206e616d657370616365207061
*636b6167657320696e636c75646520706174685f6974656d4e2800000000280700000052740100
*00529d010000529e0100005284000000529c010000525b000000529f0100002804000000528001
*0000526f01000074070000007061636b616765528c01000028000000002800000000733a000000
*433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e65
*67675c706b675f7265736f75726365732e7079525b000000da060000731000000000020a010301
*130006010f01070019026304000000070000000400000043000000736200000074000069010069
*02007c01007c0200690300640100830100640200198302007d04007404007c04008301007d0500
*782d007c0300690500445d1e007d06007404007c06008301007c05006a02006f05000150713800
*01713800577c0400536403005328040000007342000000436f6d7075746520616e206e732d7061
*636b616765207375627061746820666f7220612066696c6573797374656d206f72207a69706669
*6c6520696d706f72746572520e00000069ffffffff4e2806000000527600000052b30000005215
*000000520700000052910100005298010000280700000052720100005280010000529a01000052
*74000000528c010000740a0000006e6f726d616c697a656452bf00000028000000002800000000
*733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36633134646576
*6465762e6567675c706b675f7265736f75726365732e7079740f00000066696c655f6e735f6861
*6e646c6572e4060000730e000000000322010c010a000601130109036304000000040000000100
*00004300000073040000006400005328010000004e280100000052120000002804000000527201
*00005280010000529a010000527400000028000000002800000000733a000000433a5c7461686f
*652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f
*7265736f75726365732e7079740f0000006e756c6c5f6e735f68616e646c6572f4060000730200
*000000016301000000010000000300000043000000731c00000074000069010069020074000069
*01006903007c000083010083010053280100000073310000004e6f726d616c697a652061206669
*6c652f646972206e616d6520666f7220636f6d70617269736f6e20707572706f73657328040000
*00527600000052b300000074080000006e6f726d6361736574080000007265616c706174682801
*000000520c00000028000000002800000000733a000000433a5c7461686f652d6c6166735c7365
*747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f7572636573
*2e70795247000000fa060000730200000000026302000000030000000500000043000000733b00
*0000790c007c01007c00001953576e2800047400006a0a006f1c00010101017401007c00008301
*00047c01007c00003c7d02007c02005301586400005328010000004e2802000000526f00000052
*470000002803000000520c000000527c0000007406000000726573756c74280000000028000000
*00733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465
*766465762e6567675c706b675f7265736f75726365732e70795291010000fe060000730a000000
*000103010c010e011401630100000004000000050000004300000073570000007c000069000064
*01008301007d01007c01006901008300007d02007c01006f3100016401006902007c0100830100
*7d03007403007404006905007c0300197c02007404006905007c000019830300016e0100016400
*005328020000004e520e0000002806000000520700000052c80000005215000000740700000073
*6574617474725213000000526e0000002804000000529a010000526e0100005209000000526f01
*000028000000002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f
*6c732d302e366331346465766465762e6567675c706b675f7265736f75726365732e7079529901
*000005070000730a00000000010f010c0107010f01630100000003000000030000006300000073
*890000007400007c00007401008302006f4800017872007c0000690200830000445d33007d0100
*7c01006903008300007d01007c01006f1a00017c01006904006401008301000c6f0900017c0100
*5601711d0001711d00576e2e0001782a007c0000445d22007d02007819007405007c0200830100
*445d0b007d01007c0100560171720057715f005764020053280300000073410000005969656c64
*206e6f6e2d656d7074792f6e6f6e2d636f6d6d656e74206c696e6573206f662061206060626173
*65737472696e676060206f722073657175656e63657401000000234e2806000000526b00000052
*9f0000005279000000527b000000528a0000005242000000280300000074040000007374727374
*01000000737402000000737328000000002800000000733a000000433a5c7461686f652d6c6166
*735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f75
*726365732e707952420000000d0700007316000000000210010d0006010c011801110207000601
*0d000601730a0000005c732a28232e2a293f24730f0000005c732a5c5c5c732a28232e2a293f24
*730f0000005c732a28285c777c5b2d2e5d292b2973210000005c732a283c3d3f7c3e3d3f7c3d3d
*7c213d295c732a28285c777c5b2d2e5d292b2973040000005c732a2c73050000005c732a5c5b73
*050000005c732a5c5d730c0000005c772b285c2e5c772b292a24734c000000283f503c6e616d65
*3e5b5e2d5d2b2928202d283f503c7665723e5b5e2d5d2b2920282d7079283f503c70797665723e
*5b5e2d5d2b2920282d283f503c706c61743e2e2b29293f20293f20293f7316000000285c642b20
*7c205b612d7a5d2b207c205c2e7c202d2974010000006374030000007072657407000000707265
*76696577730600000066696e616c2d521f01000074020000007263740100000040740300000064
*65766301000000020000000400000063000000737a000000786e007400006901007c0000830100
*445d5d007d01007402007c01007c01008302007d01007c01000c700d00017c01006401006a0200
*6f0700017110006e0100017c0100640200206403006a06006f1200017c01006903006404008301
*005601711000016405007c01001756017110005764060056016400005328070000004e520e0000
*006901000000740a00000030313233343536373839690800000074010000002a73060000002a66
*696e616c2804000000740c000000636f6d706f6e656e745f72655207000000528c000000740500
*00007a66696c6c280200000052aa01000074040000007061727428000000002800000000733a00
*0000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36633134646576646576
*2e6567675c706b675f7265736f75726365732e707974140000005f70617273655f76657273696f
*6e5f70617274732a07000073120000000001100006010f0115010701110112020d026301000000
*03000000040000004300000073b30000006700007d010078a0007400007c000069010083000083
*0100445d8c007d02007c02006902006401008301006f6900017c02006402006a00006f2e000178
*2b007c01006f1f00017c0100640300196404006a02006f0e00017c010069030083000001713f00
*01576e010001782b007c01006f1f00017c0100640300196405006a02006f0e00017c0100690300
*83000001716d0001576e0100017c01006904007c020083010001711900577405007c0100830100
*53280600000073bc060000436f6e7665727420612076657273696f6e20737472696e6720746f20
*61206368726f6e6f6c6f676963616c6c792d736f727461626c65206b65790a0a20202020546869
*73206973206120726f7567682063726f7373206265747765656e20646973747574696c73272053
*747269637456657273696f6e20616e64204c6f6f736556657273696f6e3b0a2020202069662079
*6f7520676976652069742076657273696f6e73207468617420776f756c6420776f726b20776974
*682053747269637456657273696f6e2c207468656e20697420626568617665730a202020207468
*652073616d653b206f74686572776973652069742061637473206c696b65206120736c69676874
*6c792d736d6172746572204c6f6f736556657273696f6e2e2049742069730a202020202a706f73
*7369626c652a20746f2063726561746520706174686f6c6f676963616c2076657273696f6e2063
*6f64696e6720736368656d657320746861742077696c6c20666f6f6c0a20202020746869732070
*61727365722c2062757420746865792073686f756c642062652076657279207261726520696e20
*70726163746963652e0a0a202020205468652072657475726e65642076616c75652077696c6c20
*62652061207475706c65206f6620737472696e67732e20204e756d6572696320706f7274696f6e
*73206f66207468650a2020202076657273696f6e206172652070616464656420746f2038206469
*6769747320736f20746865792077696c6c20636f6d70617265206e756d65726963616c6c792c20
*6275740a20202020776974686f75742072656c79696e67206f6e20686f77206e756d6265727320
*636f6d706172652072656c617469766520746f20737472696e67732e2020446f7473206172650a
*2020202064726f707065642c2062757420646173686573206172652072657461696e65642e2020
*547261696c696e67207a65726f73206265747765656e20616c706861207365676d656e74730a20
*2020206f72206461736865732061726520737570707265737365642c20736f207468617420652e
*672e2022322e342e302220697320636f6e73696465726564207468652073616d652061730a2020
*202022322e34222e20416c7068616e756d6572696320706172747320617265206c6f7765722d63
*617365642e0a0a2020202054686520616c676f726974686d20617373756d657320746861742073
*7472696e6773206c696b6520222d2220616e6420616e7920616c70686120737472696e67207468
*61740a20202020616c7068616265746963616c6c7920666f6c6c6f7773202266696e616c222020
*726570726573656e7473206120227061746368206c6576656c222e2020536f2c2022322e342d31
*220a20202020697320617373756d656420746f2062652061206272616e6368206f722070617463
*68206f662022322e34222c20616e64207468657265666f72652022322e342e31222069730a2020
*2020636f6e73696465726564206e65776572207468616e2022322e342d31222c20776869636820
*696e207475726e206973206e65776572207468616e2022322e34222e0a0a20202020537472696e
*6773206c696b65202261222c202262222c202263222c2022616c706861222c202262657461222c
*202263616e6469646174652220616e6420736f206f6e2028746861740a20202020636f6d652062
*65666f7265202266696e616c2220616c7068616265746963616c6c79292061726520617373756d
*656420746f206265207072652d72656c656173652076657273696f6e732c0a20202020736f2074
*686174207468652076657273696f6e2022322e342220697320636f6e73696465726564206e6577
*6572207468616e2022322e346131222e0a0a2020202046696e616c6c792c20746f2068616e646c
*65206d697363656c6c616e656f75732063617365732c2074686520737472696e67732022707265
*222c202270726576696577222c20616e640a202020202272632220617265207472656174656420
*617320696620746865792077657265202263222c20692e652e2061732074686f75676820746865
*7920776572652072656c656173650a2020202063616e646964617465732c20616e642074686572
*65666f726520617265206e6f74206173206e657720617320612076657273696f6e20737472696e
*67207468617420646f6573206e6f740a20202020636f6e7461696e207468656d2c20616e642022
*64657622206973207265706c61636564207769746820616e2027402720736f2074686174206974
*20736f727473206c6f776572207468616e0a202020207468616e20616e79206f74686572207072
*652d72656c65617365207461672e0a2020202052b301000073060000002a66696e616c69ffffff
*ff73070000002a66696e616c2d74080000003030303030303030280600000052b701000052ee00
*0000528a00000052c8000000527a00000074050000007475706c65280300000052aa010000526e
*01000052b601000028000000002800000000733a000000433a5c7461686f652d6c6166735c7365
*747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f7572636573
*2e7079523d00000036070000731a000000001f06011300060110010d0103001800130203001801
*130111016300000000000000000400000042000000739b0000006500005a01006400005a020064
*0900640a00640b006401008403005a04006402008400005a05006403008400005a060065070064
*0b00640b006404008403005a0800640b00640b006405008402005a0900640b006406008401005a
*0a00650b00650a008301005a0a00640b006407008401005a0c00650b00650c008301005a0c0064
*0b006408008401005a0d00650b00650d008301005a0d005253280c00000073330000004f626a65
*637420726570726573656e74696e6720616e206164766572746973656420696d706f727461626c
*65206f626a656374630600000006000000040000004300000073700000007400007c0200830100
*701300017401006401007c02008302008201006e0100017c01007c00005f02007c02007c00005f
*03007404007c03008301007c00005f05007406006907006402006403006908007c040083010016
*8301006909007c00005f09007c05007c00005f0a006400005328040000004e7313000000496e76
*616c6964206d6f64756c65206e616d657305000000785b25735d74010000002c280b0000007406
*0000004d4f44554c4552180000005209000000740b0000006d6f64756c655f6e616d6552b90100
*0074050000006174747273523500000052a0000000521500000052cb00000052a2000000280600
*00005263000000520900000052bc01000052bd01000052cb00000052a200000028000000002800
*000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36633134
*6465766465762e6567675c706b675f7265736f75726365732e707952b600000063070000730e00
*000000010d011301090109010f0122016301000000020000000400000043000000736a00000064
*01007c00006900007c0000690100660200167d01007c00006902006f1e00017c01006402006403
*006903007c000069020083010017377d01006e0100017c00006904006f1e00017c010064040064
*05006903007c000069040083010016377d01006e0100017c01005328060000004e730700000025
*73203d20257374010000003a520e0000007305000000205b25735d52ba01000028050000005209
*00000052bc01000052bd010000521500000052cb0000002802000000526300000052aa01000028
*000000002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d
*302e366331346465766465762e6567675c706b675f7265736f75726365732e707974070000005f
*5f7374725f5f6c070000730c000000000116010a011e010a011e01630100000001000000030000
*0043000000730e0000006401007400007c0000830100165328020000004e7314000000456e7472
*79506f696e742e7061727365282572292801000000526d00000028010000005263000000280000
*00002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e
*366331346465766465762e6567675c706b675f7265736f75726365732e70795264000000740700
*0073020000000001630400000006000000070000004300000073930000007c01006f1400017c00
*006900007c02007c0300830200016e0100017401007c0000690200740300830000740300830000
*6401006701008304007d04007850007c0000690400445d45007d05007913007405007c04007c05
*008302007d040057714600047406006a0a006f1d00010101017407006402007c04007c05006602
*00168301008201007146000158714600577c04005328030000004e526000000073160000002572
*20686173206e6f202572206174747269627574652808000000521c000000527000000052bc0100
*007407000000676c6f62616c7352bd0100005271000000526c0100005276010000280600000052
*63000000521c00000052cd00000052ce00000052b5000000740400000061747472280000000028
*00000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331
*346465766465762e6567675c706b675f7265736f75726365732e707974040000006c6f61647707
*0000731400000000010700140121010a000601030113010e011f01630300000003000000060000
*0043000000735a0000007c00006900006f1e00017c00006901000c6f1300017402006401007c00
*008302008201006e0100017403007404006905007404006906007c00006901006907007c000069
*00008301007c01007c0200830300830200016400005328020000004e732600000043616e277420
*72657175697265282920776974686f7574206120646973747269627574696f6e280800000052cb
*00000052a2000000523a00000052d4000000522b00000052b800000052d200000052bd00000028
*03000000526300000052cd00000052ce00000028000000002800000000733a000000433a5c7461
*686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b
*675f7265736f75726365732e7079521c0000008107000073080000000001150113010901630300
*0000080000000900000043000000732501000079da00640900047d03007d04007c010069000064
*01006402008302005c02007d05007d06006403007c06006a06006f4c00017c0600690000640300
*6402008302005c02007d06007d04007401006902006404007c0400178301007d07007c07006903
*006f0a00017404008201006e0100017c07006905007d04006e0100016405007c06006a06006f4e
*00017c06006900006405006402008302005c02007d06007d03007406007c030069070083000083
*0100700a00017404008201006e0100017c03006907008300006900006406008301007d03006e01
*0001576e2200047404006a0a006f1600010101017404006407007c01008302008201006e240001
*587c00007c05006908008300007c06006908008300007c03007c04007c02008305005364080053
*280a0000007313010000506172736520612073696e676c6520656e74727920706f696e74206672
*6f6d20737472696e672060737263600a0a2020202020202020456e74727920706f696e74207379
*6e74617820666f6c6c6f77732074686520666f726d3a3a0a0a2020202020202020202020206e61
*6d65203d20736f6d652e6d6f64756c653a736f6d652e61747472205b6578747261312c65787472
*61325d0a0a202020202020202054686520656e747279206e616d6520616e64206d6f64756c6520
*6e616d65206172652072657175697265642c20627574207468652060603a617474727360602061
*6e640a202020202020202060605b6578747261735d606020706172747320617265206f7074696f
*6e616c0a202020202020202074010000003d690100000074010000005b7302000000785b52be01
*0000520e0000007339000000456e747279506f696e74206d75737420626520696e20276e616d65
*3d6d6f64756c653a6174747273205b6578747261735d2720666f726d61744e2800000000280900
*00005207000000523500000052a000000074050000007370656373521800000052cb00000052bb
*0100005293010000527b00000028080000007403000000636c73740300000073726352a2000000
*52bd01000052cb0000005209000000528000000052ba00000028000000002800000000733a0000
*00433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e
*6567675c706b675f7265736f75726365732e707952a00000008a0700007326000000000a03010a
*0118010d01180113010a000a010d010d01180113010a011d010e01030103010e03630400000007
*000000050000004300000073890000007400007c0100830100701300017401006401007c010083
*02008201006e0100016800007d0400785c007402007c0200830100445d4e007d05007c00006903
*007c05007c03008302007d06007c06006904007c04006a06006f1900017401006402007c01007c
*06006904008303008201006e0100017c06007c04007c06006904003c713300577c040053280300
*0000731a000000506172736520616e20656e74727920706f696e742067726f7570731200000049
*6e76616c69642067726f7570206e616d6573150000004475706c696361746520656e7472792070
*6f696e74280500000052bb0100005218000000524200000052a000000052090000002807000000
*52c6010000521700000074050000006c696e657352a2000000740400000074686973527e000000
*52bc00000028000000002800000000733a000000433a5c7461686f652d6c6166735c7365747570
*746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f75726365732e7079
*740b00000070617273655f67726f7570b3070000731400000000020d01130106010d0006011201
*100119011101630300000006000000050000004300000073bd0000007400007c01007401008302
*006f1000017c01006902008300007d01006e0d00017403007c01008301007d01006800007d0300
*7884007c0100445d7c005c02007d04007d05007c04006403006a08006f1e00017c050070070001
*7139006e0100017405006401008301008201006e0100017c04006906008300007d04007c04007c
*03006a06006f1300017405006402007c04008302008201006e0100017c00006907007c04007c05
*007c02008303007c03007c04003c713900577c0300532804000000732100000050617273652061
*206d6170206f6620656e74727920706f696e742067726f7570737325000000456e74727920706f
*696e7473206d757374206265206c697374656420696e2067726f75707373140000004475706c69
*636174652067726f7570206e616d654e2808000000526b00000052d70000007405000000697465
*6d73524300000052120000005218000000527b00000052ca010000280600000052c60100007404
*0000006461746152a200000074040000006d617073521700000052c80100002800000000280000
*0000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663313464
*65766465762e6567675c706b675f7265736f75726365732e7079740900000070617273655f6d61
*70c2070000731e0000000002100110020c01060107000c010d010701070110010c010d0113011d
*01280000000028000000004e280e000000526000000052650000005266000000521200000052b6
*00000052bf0100005264000000528f00000052c2010000521c00000052a0000000740b00000063
*6c6173736d6574686f6452ca01000052ce010000280000000028000000002800000000733a0000
*00433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e
*6567675c706b675f7265736f75726365732e707952360000006007000073180000000601060212
*0909080903120a0f090c1f0c0a0c0c0c030c126300000000000000000800000042000000737901
*00006500005a01006400005a0200641b00641b00641b00641b00650400641b0065050064010084
*07005a0600641b006402008401005a07006508006507008301005a070065090064030084000083
*01005a0a006404008400005a0b006405008400005a0c006406008400005a0d00650900650d0083
*01005a0d006407008400005a0e00650900650e008301005a0e006408008400005a0f0065090065
*0f008301005a0f006409008400005a10006509006510008301005a1000641c00640a008401005a
*1100640b008400005a1200641b00640c008401005a1300640d008400005a1400640e008400005a
*1500640f008400005a16006410008400005a1700641b006411008401005a180065080065180083
*01005a18006412008400005a19006413008400005a1a00641b006414008401005a1b0064150084
*00005a1c00641b006416008401005a1d006417008400005a1e006418008400005a1f0064190084
*00005a2000641a008400005a21006509006521008301005a21005253281d000000733500000057
*72617020616e2061637475616c206f7220706f74656e7469616c207379732e7061746820656e74
*727920772f6d657461646174616308000000080000000200000043000000736e0000007400007c
*0300700400016401008301007c00005f01007c04006400006a09006f1300017403007c04008301
*007c00005f04006e0100017c05007c00005f05007c06007c00005f06007c01007c00005f07007c
*07007c00005f08007c0200700400017409007c00005f0a006400005328020000004e7407000000
*556e6b6e6f776e280b000000523e00000052e00000005212000000523f00000074080000005f76
*657273696f6e52eb000000521400000052c20000005290010000525300000074090000005f7072
*6f76696465722808000000526300000052c2000000528701000052e0000000528e00000052eb00
*00005214000000529001000028000000002800000000733a000000433a5c7461686f652d6c6166
*735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f75
*726365732e707952b6000000dd0700007310000000000416010d01130109010901090109016304
*0000000b0000000c0000004b00000073ab000000640000670100640100145c04007d05007d0600
*7d07007d08007401006902006903007c02008301005c02007d02007d09007c0900690400830000
*640c006a06006f3f00017405007c02008301007d0a007c0a006f2800017c0a0069060064040064
*05006406006407008304005c04007d05007d06007d07007d0800718300016e0100017c00007c01
*007c03006408007c05006409007c0600640a007c0700640b007c08007c04008d020453280d0000
*004e690400000073040000002e65676773090000002e6567672d696e666f520900000074030000
*0076657274050000007079766572521900000052e0000000528e00000052eb0000005214000000
*280200000073040000002e65676773090000002e6567672d696e666f2807000000521200000052
*7600000052b3000000740800000073706c697465787452ee00000074080000004547475f4e414d
*455217000000280b00000052c601000052c2000000523f0100005287010000528e01000052e000
*0000528e00000052eb000000521400000074030000006578745211000000280000000028000000
*00733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465
*766465762e6567675c706b675f7265736f75726365732e70795292010000eb0700007314000000
*00011901180113010c010701060126020301150163010000000100000007000000430000007345
*0000007400007c00006400006402008303007c00006901007c00006902007403007c0000690400
*700400016401008301000b7c00006904007c00006905007c000069060066070053280300000074
*0e0000007061727365645f76657273696f6e521801000028000000002807000000527100000052
*90010000527f000000523101000052c200000052eb000000521400000028010000005263000000
*28000000002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c73
*2d302e366331346465766465762e6567675c706b675f7265736f75726365732e70795246010000
*fb070000730600000000011b012001630200000002000000030000004300000073100000007400
*007c00006901007c01008302005328010000004e28020000007403000000636d70740700000068
*617368636d702802000000526300000052f500000028000000002800000000733a000000433a5c
*7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c
*706b675f7265736f75726365732e707974070000005f5f636d705f5f0108000073000000006301
*000000010000000200000043000000730d0000007400007c00006901008301005328010000004e
*280200000074040000006861736852da0100002801000000526300000028000000002800000000
*733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36633134646576
*6465762e6567675c706b675f7265736f75726365732e707974080000005f5f686173685f5f0208
*000073000000006301000000020000000500000043000000733c000000790b007c000069000053
*576e2a00047401006a0a006f1e00010101017c0000690200690300830000047c00005f00007d01
*007c01005301586400005328010000004e280400000074040000005f6b6579526c01000052e000
*000052ee00000028020000005263000000527f00000028000000002800000000733a000000433a
*5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e656767
*5c706b675f7265736f75726365732e7079527f00000009080000730a000000000103010b010e01
*16016301000000020000000500000043000000733c000000790b007c000069000053576e2a0004
*7401006a0a006f1e00010101017402007c0000690300830100047c00005f00007d01007c010053
*01586400005328010000004e2804000000740f0000005f7061727365645f76657273696f6e526c
*010000523d000000528e0000002802000000526300000074020000007076280000000028000000
*00733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465
*766465762e6567675c706b675f7265736f75726365732e707952d801000012080000730a000000
*000103010b010e01160163010000000200000005000000430000007391000000790b007c000069
*000053576e7f00047401006a0a006f730001010101786e007c0000690200640100830100445d49
*007d01007c01006903008300006904006402008301006f2d00017405007c010069060064030064
*0400830200640400196907008300008301007c00005f00007c00006900005301712c0057740800
*6405007c00008302008201006e020001586400005328060000004e7308000000504b472d494e46
*4f730800000076657273696f6e3a52be0100006901000000732e0000004d697373696e67202756
*657273696f6e3a272068656164657220616e642f6f7220504b472d494e464f2066696c65280900
*000052d1010000526c010000740d0000005f6765745f6d6574616461746152ee000000528a0000
*00523f0000005207000000527b000000521800000028020000005263000000527e000000280000
*00002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e
*366331346465766465762e6567675c706b675f7265736f75726365732e7079528e0000001c0800
*007314000000000103010b010e0110000601160125010c02030163010000000500000005000000
*4300000073a7000000790b007c000069000053576e9500047401006a0a006f8900010101016801
*0067000064000036047d01007c00005f0000786a00640300445d62007d02007859007403007c00
*006904007c0200830100830100445d42005c02007d03007d04007c03006f1000017405007c0300
*8301007d03006e0100017c01006906007c03006700008302006907007408007c04008301008301
*000171530057713700577c01005301586400005328040000004e730c0000007265717569726573
*2e747874730b000000646570656e64732e7478742802000000730c00000072657175697265732e
*747874730b000000646570656e64732e747874280900000074160000005f446973747269627574
*696f6e5f5f6465705f6d6170526c0100005212000000524300000052e1010000524400000052b7
*00000052ca000000523c000000280500000052630000007402000000646d520900000052220100
*0074040000007265717328000000002800000000733a000000433a5c7461686f652d6c6166735c
*7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f757263
*65732e707974080000005f6465705f6d61702e0800007318000000000103010b010e0114010700
*060116000c01070010012701630200000005000000080000004300000073840000007c00006900
*007d02006700007d03007c03006901007c0200690200640200640300830200830100017855007c
*0100445d4d007d0400791b007c03006901007c02007404007c0400830100198301000157712f00
*047405006a0a006f1d00010101017406006401007c00007c040066020016830100820100712f00
*0158712f00577c030053280400000073400000004c697374206f6620526571756972656d656e74
*73206e656564656420666f7220746869732064697374726f206966206065787472617360206172
*652075736564731f000000257320686173206e6f20737563682065787472612066656174757265
*2025724e2800000000280700000052e501000052ca000000528400000052120000005244000000
*526f000000523a0000002805000000526300000052cb00000052e3010000740400000064657073
*52d701000028000000002800000000733a000000433a5c7461686f652d6c6166735c7365747570
*746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f75726365732e7079
*52bd0000003a080000731600000000020901060119010700060103011b010e0103011c02630200
*000003000000030000006300000073370000007c00006900007c01008301006f2300017820007c
*00006901007c0100830100445d0b007d02007c02005601712000576e0100016400005328010000
*004e280200000052a300000052a5000000280300000052630000005209000000527e0000002800
*0000002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d30
*2e366331346465766465762e6567675c706b675f7265736f75726365732e707952e10100004808
*000073080000000001100110000601630200000003000000030000004300000073840000007c01
*006402006a08006f0d00017401006902007d01006e0100017c00006903007c0100830100017c01
*007401006902006a08006f4900017404007c0000690500830100017839007c0000690600640100
*830100445d24007d02007c02007401006907006a06006f0e00017408007c020083010001715400
*01715400576e010001640200532803000000733e000000456e7375726520646973747269627574
*696f6e20697320696d706f727461626c65206f6e20607061746860202864656661756c743d7379
*732e706174682973160000006e616d6573706163655f7061636b616765732e7478744e28090000
*005212000000521300000052b300000052c1000000525b00000052c200000052e1010000526e00
*0000522a0000002803000000526300000052b30000007403000000706b67280000000028000000
*00733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465
*766465762e6567675c706b675f7265736f75726365732e7079740800000061637469766174654d
*080000731200000000020d000d010d0110010d0110000601100063010000000200000004000000
*4300000073520000006401007400007c00006901008301007400007c00006902008301007c0000
*69030070040001740400660300167d01007c00006905006f1500017c01006402007c0000690500
*17377d01006e0100017c0100532803000000734000000052657475726e20776861742074686973
*20646973747269627574696f6e2773207374616e64617264202e6567672066696c656e616d6520
*73686f756c64206265730a00000025732d25732d70792573521f01000028060000005245000000
*52e0000000528e00000052eb00000052fa000000521400000028020000005263000000520c0000
*0028000000002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c
*732d302e366331346465766465762e6567675c706b675f7265736f75726365732e7079523c0100
*0056080000730c00000000020301180114030a0115016301000000010000000300000043000000
*732a0000007c00006900006f1200016401007c00007c00006900006602001653017401007c0000
*830100536400005328020000004e730700000025732028257329280200000052c2000000526d00
*00002801000000526300000028000000002800000000733a000000433a5c7461686f652d6c6166
*735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f75
*726365732e7079526400000061080000730600000000010a011202630100000002000000070000
*004300000073500000007916007400007c00006401006400008303007d0100576e190004740200
*6a0a006f0d00010101016400007d01006e020001587c0100700400016402007d01006403007c00
*006903007c0100660200165328040000004e528e00000073110000005b756e6b6e6f776e207665
*7273696f6e5d73050000002573202573280400000052710000005212000000521800000052e000
*000028020000005263000000528e00000028000000002800000000733a000000433a5c7461686f
*652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f
*7265736f75726365732e707952bf01000067080000730c0000000001030016010e000b010d0163
*02000000020000000300000043000000732d0000007c01006900006401008301006f0d00017401
*007c01008202006e0100017402007c00006903007c010083020053280200000073410000004465
*6c656761746520616c6c20756e7265636f676e697a6564207075626c6963206174747269627574
*657320746f202e6d657461646174612070726f766964657252880000002804000000528a000000
*526c010000527100000052d20100002802000000526300000052c1010000280000000028000000
*00733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465
*766465762e6567675c706b675f7265736f75726365732e7079740b0000005f5f67657461747472
*5f5f6d0800007306000000000210010d01630300000004000000050000004b0000007328000000
*7c00006900007401007c01008301007402006903006904007c01008301007c02007c03008d0300
*5328010000004e280500000052920100005291010000527600000052b3000000523f0100002804
*00000052c6010000520c0000005287010000528e01000028000000002800000000733a00000043
*3a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567
*675c706b675f7265736f75726365732e70795288010000740800007306000000000106011b0163
*01000000010000000400000043000000731d0000007400006901006401007c00006902007c0000
*69030066020016830100532802000000733f00000052657475726e206120606052657175697265
*6d656e7460602074686174206d617463686573207468697320646973747269627574696f6e2065
*786163746c79730600000025733d3d25732804000000523500000052a000000052e0000000528e
*0000002801000000526300000028000000002800000000733a000000433a5c7461686f652d6c61
*66735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f
*75726365732e707952d50000007b08000073020000000002630300000004000000040000004300
*000073460000007c00006900007c01007c02008302007d03007c03006402006a08006f1d000174
*02006401007c01007c0200660200660100168301008201006e0100017c03006903008300005328
*03000000733d00000052657475726e2074686520606e616d656020656e74727920706f696e7420
*6f66206067726f757060206f7220726169736520496d706f72744572726f727318000000456e74
*727920706f696e74202572206e6f7420666f756e644e2804000000522200000052120000005276
*01000052c2010000280400000052630000005217000000520900000052bc000000280000000028
*00000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331
*346465766465762e6567675c706b675f7265736f75726365732e707952200000007f0800007308
*000000000212010d011d0163020000000300000006000000430000007367000000790d007c0000
*6900007d0200576e3500047401006a0a006f2900010101017402006903007c0000690400640100
*8301007c0000830200047d02007c00005f00006e020001587c01006402006a09006f1100017c02
*006906007c010068000083020053017c0200532803000000733d00000052657475726e20746865
*20656e74727920706f696e74206d617020666f72206067726f7570602c206f7220746865206675
*6c6c20656e747279206d61707310000000656e7472795f706f696e74732e7478744e2807000000
*74070000005f65705f6d6170526c010000523600000052ce01000052e101000052120000005284
*000000280300000052630000005217000000740600000065705f6d617028000000002800000000
*733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36633134646576
*6465762e6567675c706b675f7265736f75726365732e7079522100000086080000731000000000
*0203010d010e01060121020d011101630300000003000000020000004300000073160000007c00
*006900007c01008301006901007c0200830100532801000000733c00000052657475726e207468
*6520456e747279506f696e74206f626a65637420666f72206067726f7570602b606e616d65602c
*206f722060604e6f6e656060280200000052210000005284000000280300000052630000005217
*000000520900000028000000002800000000733a000000433a5c7461686f652d6c6166735c7365
*747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f7572636573
*2e70795222000000920800007302000000000263030000000a0000000900000043000000733e01
*00007c0200700700017c00006900007d02007c02007005000164010053017c0100740100690200
*6a08006f0e00017c0000690300830000016e0100017404007c02008301007d0300740500690200
*6906007c03008301007d04007407007404007c01008302007d05006401007d0600787f00740900
*7c0500830100445d60005c02007d07007d08007c08007c03006a02006f05000150717a00017c08
*007c04006a02006f3500017c0000690a00740b006a02006f2500017c0100690c007c07007c0200
*830200017c0500690c007c07007c03008302000150717a0001717a00577c0100690d007c020083
*01000164010053784800791a007c0500690e007c03007c0700640200178302007d0900576e1400
*04740f006a0a006f0800010101015071f20001587c05007c09003d7c01007c09003d7c09007d07
*0071f2006401005328030000007340000000496e736572742073656c662e6c6f636174696f6e20
*696e2070617468206265666f726520697473206e65617265737420706172656e74206469726563
*746f72794e6901000000281000000052c2000000521300000052b3000000741600000063686563
*6b5f76657273696f6e5f636f6e666c69637452910100005276000000520b00000052d400000052
*120000007409000000656e756d65726174655290010000524800000052c4000000527a00000074
*05000000696e6465785218000000280a000000526300000052b300000074030000006c6f637404
*0000006e6c6f6374040000006264697274050000006e7061746874020000006270740100000070
*52bf00000074020000006e7028000000002800000000733a000000433a5c7461686f652d6c6166
*735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f75
*726365732e707952c1000000a80800007336000000000310010701050210010e020c0112010f02
*06010d000c010d0105011d021001100109020d010403030103011a010e0106020e010902630100
*000005000000060000004300000073e20000007c00006900006401006a02006f05000164000053
*017401006902007c00006903006402008301008301007d01007404007c00006905008301007d02
*00789f007c0000690300640300830100445d8e007d03007c03007406006907006a0700701a0001
*7c03007c01006a0600700d00017c03007408006a06006f070001714c006e010001740900740600
*6907007c0300196404006400008303007d04007c04006f1d00017404007c0400830100690b007c
*02008301006f070001714c006e010001740c006405007c03007c04007c00006905006603001683
*010001714c00576400005328060000004e740a0000007365747570746f6f6c7373160000006e61
*6d6573706163655f7061636b616765732e747874730d000000746f705f6c6576656c2e74787452
*2301000073490000004d6f64756c652025732077617320616c726561647920696d706f72746564
*2066726f6d2025732c20627574202573206973206265696e6720616464656420746f207379732e
*70617468280d000000527f00000052d700000052d800000052e1010000524700000052c2000000
*5213000000526e000000529e01000052710000005212000000528a000000740d00000069737375
*655f7761726e696e672805000000526300000074030000006e737052ef01000074070000006d6f
*646e616d657402000000666e28000000002800000000733a000000433a5c7461686f652d6c6166
*735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f75
*726365732e707952ec010000d1080000731e00000000011001050218010f01100006011d010d02
*070219011d010701030103016301000000010000000500000043000000733a000000790b007c00
*0069000001576e2800047401006a0a006f1c00010101017402006401007403007c000083010017
*830100017404005301587405005328020000004e7310000000556e6275696c742065676720666f
*72202806000000528e000000521800000052f701000052610000005291000000528f0000002801
*000000526300000028000000002800000000733a000000433a5c7461686f652d6c6166735c7365
*747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f7572636573
*2e707952f2000000e5080000730c000000000103010b010e011401060163010000000300000007
*0000004b000000734d000000782a00640800445d22007d02007c01006900007c02007401007c00
*007c020064090083030083020001710700577c01006900006407007c0000690300830200017c00
*006904007c01008d000053280a0000007340000000436f70792074686973206469737472696275
*74696f6e2c20737562737469747574696e6720696e20616e79206368616e676564206b6579776f
*7264206172677352e0000000528e00000052eb000000521400000052c200000052900100005287
*0100002806000000730c00000070726f6a6563745f6e616d65730700000076657273696f6e730a
*00000070795f76657273696f6e7308000000706c6174666f726d73080000006c6f636174696f6e
*730a000000707265636564656e63654e280500000052b70000005271000000521200000052d201
*0000525f00000028030000005263000000528e01000052c101000028000000002800000000733a
*000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465
*762e6567675c706b675f7265736f75726365732e70797405000000636c6f6e65ed080000730e00
*000000020301000104000602200113016301000000030000000400000043000000732d00000067
*0000047d01007c0000690000445d18007d02007c02006f0b00017c01007c020012710e0001710e
*007e01005328010000004e280100000052e50100002803000000526300000074040000005f5b31
*5d740300000064657028000000002800000000733a000000433a5c7461686f652d6c6166735c73
*65747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f75726365
*732e707952cb000000fb080000730200000000014e280000000028220000005260000000526500
*00005266000000521200000052fa000000524800000052b6000000529201000052cf0100007408
*00000070726f706572747952da01000052db01000052dd010000527f00000052d8010000528e00
*000052e501000052bd00000052e101000052e8010000523c010000526400000052bf01000052e9
*010000528801000052d500000052200000005221000000522200000052c100000052ec01000052
*f200000052fb01000052cb000000280000000028000000002800000000733a000000433a5c7461
*686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b
*675f7265736f75726365732e70795234000000db0700007348000000060106020c01120c0c0d0c
*0203010c060901090709060c0309070c03090c0c06090a0c020c0e09050c09090b090609060907
*0c050c02090409070c0c09160c2909140908090e0902630000000005000000090000004f000000
*737f0000006401007d02007400008300007d0300792f007828007401006902007c020083010069
*03007c03006a08006f0e00017c0200640100377d02007115000157576e1300047404006a0a006f
*0700010101016e020001586402006403006b05006c06007d0400017c04006404007c0200640100
*177c00007c01008e0001016400005328050000004e690100000069ffffffff2801000000740400
*00007761726e740a000000737461636b6c6576656c280700000052c00100005213000000529900
*0000529a000000521800000074080000007761726e696e677352ff010000280500000052620000
*00528e01000074050000006c6576656c74010000006752ff01000028000000002800000000733a
*000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465
*762e6567675c706b675f7265736f75726365732e707952f7010000000900007314000000000106
*01090103030300190113010e010501100163010000000b0000000900000023000000732f010000
*7400007401007c00008301008301008900008700006601006401008600007d0100780701880000
*445dff007d02007402007c02008301007d03007c0300701300017403006402007c020083020082
*01006e0100017c03006904006403008301007d04007c03006905008300007d05006700007d0600
*7406007c02007c05008302007d03007c03006f3400017c03006905008300007d05007c01007402
*007407007c02007c05006408006404008306005c03007d02007d05007d06006e0100017c010074
*08007409007c02007c05006409006406008306005c03007d02007d05007d0700670000047d0800
*7c0700445d1f005c02007d09007d0a007c08007c0900740a007c0a008301006602001271ee007e
*08007d0700740b007c04007c07007c060083030056017128005764070053280a00000073a30000
*005969656c64206060526571756972656d656e746060206f626a6563747320666f722065616368
*2073706563696669636174696f6e20696e206073747273600a0a20202020607374727360206d75
*737420626520616e20696e7374616e6365206f6620606062617365737472696e6760602c206f72
*20612028706f737369626c792d6e6573746564290a202020206974657261626c65207468657265
*6f662e0a202020206306000000080000000a00000013000000734d0100006700007d0600781101
*7c01007c02007c0300830200700001017400007c02007c03008302006f3c000179160088000069
*01008300007d02006401007d030057716500047402006a0a006f13000101010174030064020083
*010082010071650001586e0100017c00007c02007c03008302007d07007c070070250001740300
*6403007c050017640400177c02006405007c02007c03001f8304008201006e0100017c06006904
*007c07006905007c04008c0000830100017c07006906008300007d03007407007c02007c030083
*02007d07007c07006f1000017c07006906008300007d0300710900017c01007c02007c03008302
*00701d00017403006406007c02006405007c02007c03001f830400820100710900017109000157
*7c01007c02007c03008302007d07007c07006f1000017c07006906008300007d03006e0100017c
*02007c03007c06006603005328070000004e6900000000732b0000005c206d757374206e6f7420
*617070656172206f6e20746865206c617374206e6f6e626c616e6b206c696e6573090000004578
*70656374656420730300000020696e74020000006174731e000000457870656374656420272c27
*206f7220656e642d6f662d6c69737420696e28080000007408000000434f4e54494e5545740400
*00006e657874740d00000053746f70497465726174696f6e5218000000527a0000005217000000
*7403000000656e647405000000434f4d4d41280800000074040000004954454d740a0000005445
*524d494e41544f52527e00000052f4010000740600000067726f75707374090000006974656d5f
*6e616d6552cb0100005211000000280100000052c80100002800000000733a000000433a5c7461
*686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b
*675f7265736f75726365732e707974090000007363616e5f6c6973742c09000073320000000002
*060203001001100103010c000a010e01030112030f010701250216010c020f0107011001100103
*011f030f010700100173190000004d697373696e6720646973747269627574696f6e2073706563
*6901000000730c00000027657874726127206e616d656902000000730c00000076657273696f6e
*20737065634e28010000006901000000280200000069010000006902000000280c000000740400
*0000697465725242000000740600000044495354524f5218000000521700000052080200007408
*0000004f425241434b4554740800000043425241434b4554740700000056455253494f4e740800
*00004c494e455f454e44523f0000005235000000280b00000052a9010000520e020000527e0000
*00521100000052e000000052f401000052cb00000052c501000052fc01000074020000006f7074
*0300000076616c2800000000280100000052c8010000733a000000433a5c7461686f652d6c6166
*735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f75
*726365732e7079523c000000230900007324000000000712020f20070006010c01070113010f01
*0c0106020f0107010c0103012503240133016301000000070000000900000043000000736c0000
*00670000047d01007c0000445d16007d02007c01007c02006900007c020066020012710b007e01
*007d03007c030069010083000001670000047d04007c0300445d13005c02007d05007d06007c04
*007c060012713f007e04007c00006400006400006401008503003c6400005328020000004e69ff
*ffffff280200000052da01000052d3000000280700000052f000000052fc01000052a200000074
*03000000746d7074040000005f5b325d7402000000686352640100002800000000280000000073
*3a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663313464657664
*65762e6567675c706b675f7265736f75726365732e707952ef0000006009000073060000000001
*2a010a01630000000000000000020000004200000073530000006500005a01006400008400005a
*02006401008400005a03006402008400005a04006403008400005a05006404008400005a060064
*05008400005a07006406008400005a08006509006508008301005a080052532807000000630400
*00000d0000000c0000004300000073350100007c01007400007c0100830100027c00005f01007d
*01007c01007c0100690200830000027c00005f03007c00005f0400670000047d04007c0200445d
*29005c02007d05007d06007c04007405007c06008301007406007c0500197c05007c0600660400
*12713a007e04007d07007c070069070083000001670000047d08007c0700445d1f005c04007d09
*007d0a007d05007d0b007c08007c05007c0b00660200127181007e08007c00005f08007c070074
*0900740a00740b007c0300830200830100027c00005f0c007c00005f0d007c0000690400740900
*670000047d0c007c0700445d1f005c04007d09007d0a007d05007d0b007c0c007c05007c090066
*02001271e2007e0c00830100740e007c0000690d008301006603007c00005f0f007410007c0000
*690f008301007c00005f1100640100532802000000733e000000444f204e4f542043414c4c2054
*48495320554e444f43554d454e544544204d4554484f443b2075736520526571756972656d656e
*742e70617273652829214e2812000000523e000000740b000000756e736166655f6e616d6552ee
*00000052e0000000527f000000523d000000740d00000073746174655f6d616368696e6552d300
*000052c501000052b901000052d4000000524400000052ee01000052cb00000074090000006672
*6f7a656e736574740700000068617368436d7052dc01000074120000005f526571756972656d65
*6e745f5f68617368280d000000526300000052e000000052c501000052cb00000052fc01000052
*1502000052e200000052ee0100005218020000740600000070617273656474050000007472616e
*7352d301000074040000005f5b335d28000000002800000000733a000000433a5c7461686f652d
*6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265
*736f75726365732e707952b60000007609000073120000000002160119013d010a01360122023c
*01150263010000000500000006000000430000007371000000640100690000670000047d01007c
*0000690100445d16007d02007c01006402006900007c0200830100127114007e01008301007d03
*006401006900007c00006902008301007d04007c04006f0e00016403007c0400167d04006e0100
*016404007c00006903007c04007c0300660300165328050000004e52ba01000052180100007304
*0000005b25735d73060000002573257325732804000000521500000052c501000052cb00000052
*e00000002805000000526300000052fc01000052aa01000052c501000052cb0000002800000000
*2800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663
*31346465766465762e6567675c706b675f7265736f75726365732e707952bf0100008409000073
*0a00000000013601120107000e0163020000000200000003000000430000007320000000740000
*7c01007401008302006f1000017c00006902007c01006902006a02005328010000004e28030000
*00526b0000005235000000521d0200002802000000526300000052f50000002800000000280000
*0000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663313464
*65766465762e6567675c706b675f7265736f75726365732e707974060000005f5f65715f5f8a09
*000073020000000001630200000008000000050000004300000073160100007400007c01007401
*008302006f3300017c01006902007c00006902006a03006f05000174030053017c00006904006f
*0d00017c01006905007d0100716300016e2100017400007c01007406008302006f100001740700
*7c01008301007d01006e0100016400007d0200788f007c0000690400445d84005c04007d03007d
*04007d05007d06007c04007409007c01007c0300830200197d07007c07006401006a02006f0500
*0174030053017c07006402006a02006f050001740a0053017c07006403006a02006f0a0001740a
*007d0200717300017c07006404006a0200700d00017c02006400006a08006f0a00017403007d02
*0071730001717300577c02006400006a08006f0a0001740a007d02006e0100017c020053280500
*00004e74010000004674010000005474010000002b521f010000280b000000526b000000523400
*0000527f000000529100000052ee01000052d8010000529f000000523d000000521200000052d9
*010000528f0000002808000000526300000052bf0000005261010000521f020000522002000052
*1502000052d30100007406000000616374696f6e28000000002800000000733a000000433a5c74
*61686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c70
*6b675f7265736f75726365732e707952b90000008d090000732c00000000011001130005010a00
*11011001100106010a00120113010d0005010d0005010d000a011a000e010d000a016301000000
*01000000010000004300000073070000007c00006900005328010000004e2801000000521e0200
*002801000000526300000028000000002800000000733a000000433a5c7461686f652d6c616673
*5c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f7572
*6365732e707952dd0100009e090000730200000000016301000000010000000300000043000000
*730e0000006401007400007c0000830100165328020000004e7315000000526571756972656d65
*6e742e7061727365282572292801000000526d0000002801000000526300000028000000002800
*000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36633134
*6465766465762e6567675c706b675f7265736f75726365732e70795264000000a1090000730000
*00006301000000020000000300000043000000735b0000007400007401007c0000830100830100
*7d01007c01006f2f00017402007c01008301006401006a02006f0900017c010064020019530174
*03006403007c00008302008201006e0100017403006404007c0000830200820100640000532805
*0000004e69010000006900000000731d0000004578706563746564206f6e6c79206f6e65207265
*71756972656d656e7473150000004e6f20726571756972656d656e747320666f756e6428040000
*0052c7000000523c00000052310100005218000000280200000052aa01000052e4010000280000
*00002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e
*366331346465766465762e6567675c706b675f7265736f75726365732e707952a0000000a40900
*00730c000000000112010701130109011301280a0000005260000000526500000052b600000052
*bf010000522202000052b900000052dd010000526400000052a0000000740c0000007374617469
*636d6574686f64280000000028000000002800000000733a000000433a5c7461686f652d6c6166
*735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f7265736f75
*726365732e707952350000007509000073100000000601090e0906090309110903090309087303
*0000002d2d5474010000003c7303000000542d5473020000003c3d7303000000462b4674010000
*003e7303000000542b4673020000003e3d7303000000542e2e73020000003d3d7303000000462b
*2b7302000000213d6301000000010000000300000043000000733c0000007400007c0000740100
*830200702500016401007c0000740200660200640200840000830000597d00007c000069030064
*03001f53017c0000690300532804000000732600000047657420616e206d726f20666f72206120
*74797065206f7220636c617373696320636c61737352c601000063000000000000000001000000
*4200000073080000006500005a0100525328000000002802000000526000000052650000002800
*00000028000000002800000000733a000000433a5c7461686f652d6c6166735c7365747570746f
*6f6c732d302e366331346465766465762e6567675c706b675f7265736f75726365732e707952c6
*010000bc0900007302000000060069010000002804000000526b00000074040000007479706574
*060000006f626a65637474070000005f5f6d726f5f5f280100000052c601000028000000002800
*000000733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36633134
*6465766465762e6567675c706b675f7265736f75726365732e707974080000005f6765745f6d72
*6fb909000073080000000002100119010c01630200000003000000060000004300000073430000
*00783c007400007401007c01006401007402007c0100830100830300830100445d1c007d02007c
*02007c00006a06006f0900017c00007c0200195301711f00576402005328030000007332000000
*52657475726e20616e206164617074657220666163746f727920666f7220606f62602066726f6d
*2060726567697374727960525f0000004e2803000000522d0200005271000000522a0200002803
*0000007408000000726567697374727974020000006f6252630100002800000000280000000073
*3a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663313464657664
*65762e6567675c706b675f7265736f75726365732e70795272000000c009000073080000000002
*1f0006010d016301000000020000000200000043000000733a0000007400006901006902007c00
*008301007d01007400006901006903007c0100830100701100017400006904007c010083010001
*6e0100016401005328020000007331000000456e7375726520746861742074686520706172656e
*74206469726563746f7279206f6620607061746860206578697374734e28050000005276000000
*52b3000000520b000000520600000074080000006d616b6564697273280200000052b300000052
*0b00000028000000002800000000733a000000433a5c7461686f652d6c6166735c736574757074
*6f6f6c732d302e366331346465766465762e6567675c706b675f7265736f75726365732e707952
*46000000c70900007306000000000212011301630100000004000000040000006300000073ac00
*00006406007d01006700007d0200788e007401007c0000830100445d80007d03007c0300690200
*6401008301006f5d00017c03006903006402008301006f3a00017c0100700700017c02006f0f00
*017c01007c020066020056016e0100017c0300640300640400216904008300007d01006700007d
*0200719900017405006405007c0300830200820100711900017c02006906007c03008301000171
*1900577c01007c02006602005601640600532807000000737201000053706c6974206120737472
*696e67206f72206974657261626c652074686572656f6620696e746f202873656374696f6e2c63
*6f6e74656e74292070616972730a0a202020204561636820606073656374696f6e606020697320
*612073747269707065642076657273696f6e206f66207468652073656374696f6e206865616465
*722028225b73656374696f6e5d22290a20202020616e642065616368206060636f6e74656e7460
*602069732061206c697374206f66207374726970706564206c696e6573206578636c7564696e67
*20626c616e6b206c696e657320616e640a20202020636f6d6d656e742d6f6e6c79206c696e6573
*2e202049662074686572652061726520616e792073756368206c696e6573206265666f72652074
*68652066697273742073656374696f6e0a202020206865616465722c2074686579277265207265
*7475726e656420696e206120666972737420606073656374696f6e6060206f662060604e6f6e65
*60602e0a2020202052c401000074010000005d690100000069ffffffff7317000000496e76616c
*69642073656374696f6e2068656164696e674e280700000052120000005242000000528a000000
*523e010000527b0000005218000000527a000000280400000052aa010000740700000073656374
*696f6e7407000000636f6e74656e74527e00000028000000002800000000733a000000433a5c74
*61686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c70
*6b675f7265736f75726365732e70795243000000cd090000731a0000000008060106010d000601
*100110010e010f0113010a0213021103630000000004000000070000004f000000734400000064
*01006402006b00006c01007d0200017402006903007d03007a1a007404007402005f03007c0200
*7c00007c01008e000053576400007c03007402005f0300586400005328030000004e69ffffffff
*280100000074070000006d6b7374656d702805000000740800000074656d7066696c6552340200
*005276000000520500000074070000006f735f6f70656e28040000005262000000528e01000052
*3402000074080000006f6c645f6f70656e28000000002800000000733a000000433a5c7461686f
*652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b675f
*7265736f75726365732e7079525e010000e6090000730c00000000011001090103010901110263
*010000000200000004000000430000007342000000783b00740000740100830100445d2d007d01
*007c0100690200640100830100701700017403007401007c01008302007c00007c01003c710d00
*01710d00576400005328020000004e52880000002804000000525701000074080000005f6d616e
*61676572528a000000527100000028020000005203020000520900000028000000002800000000
*733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36633134646576
*6465762e6567675c706b675f7265736f75726365732e7079740b0000005f696e697469616c697a
*65f2090000730800000000010d00060110012801000000740c0000005f5f72657175697265735f
*5f6301000000010000000100000043000000730a0000007c000069000083000053280000000028
*0100000052e8010000280100000052a200000028000000002800000000733a000000433a5c7461
*686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c706b
*675f7265736f75726365732e70795246010000160a000073000000002896000000526600000052
*130000005276000000524701000052590100005220010000527401000052f8000000521c020000
*74090000004e616d654572726f7274040000007365747352000000005201000000520200000052
*0300000052040000005205000000523602000074070000006f732e706174685206000000520700
*00005208000000521b00000074070000005f5f616c6c5f5f7409000000457863657074696f6e52
*3700000052380000005239000000523a0000005267000000528e00000052fa0000005248000000
*5249000000524a000000524b000000524c000000525a000000521e000000521600000052860000
*00520f00000052320100005210000000529000000052400000005241000000521d000000525d00
*0000521f0000005220000000521200000052210000005222000000524d000000524e000000522b
*02000052320000005231000000525e000000521b010000523b0000005233000000523000000052
*3e000000523f00000052440000005245000000525400000052550000005256000000522a020000
*525200000052530000005257000000528a010000524f0000005250000000525100000052730100
*005277010000525c000000528201000052580000005291000000522d0000005289010000522601
*0000528f01000052950100005296010000529e0100005259000000529c010000522a000000525b
*00000052a201000052a30100005247000000529101000052990100005242000000521100000052
*1402000052050200005210020000521302000052090200005211020000521202000052bb010000
*7407000000564552424f5345740a00000049474e4f52454341534552d601000052b40100005284
*000000528c00000052b7010000523d0000005236000000523400000052f7010000523c00000052
*ef0000005235000000521b020000522d020000527200000052460000005243000000525e010000
*5238020000523902000052c0010000522b00000074080000005f5f6d61696e5f5f523a02000052
*76010000521c00000052d200000052a200000052b800000052b300000052b500000052af000000
*52b4000000522300000052e6000000522c00000052d40000002800000000280000000028000000
*00733a000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465
*766465762e6567675c706b675f7265736f75726365732e707974080000003c6d6f64756c653e0e
*000000735c01000006025402030108010e0115032201100116020c0e092b0c010c010901090309
*0109010303090109030c0103030c010c01060306030f0309010c010c01090106030c0216051603
*1603160306010d01060106010601060106020909090c0c0c090309140f010f0106020933090806
*02090809040c0409051329162916ff0020168f0603161213cd09290908090a0909090e135e0d03
*161a16161303160b0905168b10191629161916101315131409290602090a0c060c0c100209090c
*020d020c230d020601060209110915091f0c0a090c0d01100309030d0309040c070908090c1201
*120112011201120112011201120106010302160315012c02090c092a167b16ff00260923093d09
*1513390302070107010701070107010a040907090709060919090b090109040d03090103021401
*0e010503030111010e010c0109011300060211010a000601100115011202090109010901090106
*040d010900
adddir ./setuptools-0.6c14devdev.egg/setuptools
addfile ./setuptools-0.6c14devdev.egg/setuptools/__init__.py
hunk ./setuptools-0.6c14devdev.egg/setuptools/__init__.py 1
+"""Extensions to the 'distutils' for large or complex distributions"""
+from setuptools.extension import Extension, Library
+from setuptools.dist import Distribution, Feature, _get_unpatched
+import distutils.core, setuptools.command
+from setuptools.depends import Require
+from distutils.core import Command as _Command
+from distutils.util import convert_path
+import os.path
+
+__version__ = '0.7a1'
+__all__ = [
+    'setup', 'Distribution', 'Feature', 'Command', 'Extension', 'Require',
+    'find_packages'
+]
+
+bootstrap_install_from = None
+
+def find_packages(where='.', exclude=()):
+    """Return a list all Python packages found within directory 'where'
+
+    'where' should be supplied as a "cross-platform" (i.e. URL-style) path; it
+    will be converted to the appropriate local path syntax.  'exclude' is a
+    sequence of package names to exclude; '*' can be used as a wildcard in the
+    names, such that 'foo.*' will exclude all subpackages of 'foo' (but not
+    'foo' itself).
+    """
+    out = []
+    stack=[(convert_path(where), '')]
+    while stack:
+        where,prefix = stack.pop(0)
+        for name in os.listdir(where):
+            fn = os.path.join(where,name)
+            if ('.' not in name and os.path.isdir(fn) and
+                os.path.isfile(os.path.join(fn,'__init__.py'))
+            ):
+                out.append(prefix+name); stack.append((fn,prefix+name+'.'))
+    for pat in list(exclude)+['ez_setup']:
+        from fnmatch import fnmatchcase
+        out = [item for item in out if not fnmatchcase(item,pat)]
+    return out
+
+setup = distutils.core.setup
+
+_Command = _get_unpatched(_Command)
+
+class Command(_Command):
+    __doc__ = _Command.__doc__
+
+    command_consumes_arguments = False
+
+    def __init__(self, dist, **kw):
+        # Add support for keyword arguments
+        _Command.__init__(self,dist)
+        for k,v in kw.items():
+            setattr(self,k,v)
+
+    def reinitialize_command(self, command, reinit_subcommands=0, **kw):
+        cmd = _Command.reinitialize_command(self, command, reinit_subcommands)
+        for k,v in kw.items():
+            setattr(cmd,k,v)    # update command with keywords
+        return cmd
+
+import distutils.core
+distutils.core.Command = Command    # we can't patch distutils.cmd, alas
+
+def findall(dir = os.curdir):
+    """Find all files under 'dir' and return the list of full filenames
+    (relative to 'dir').
+    """
+    all_files = []
+    for base, dirs, files in os.walk(dir):
+        if base==os.curdir or base.startswith(os.curdir+os.sep):
+            base = base[2:]
+        if base:
+            files = [os.path.join(base, f) for f in files]
+        all_files.extend(filter(os.path.isfile, files))
+    return all_files
+
+import distutils.filelist
+distutils.filelist.findall = findall    # fix findall bug in distutils.
+
+
addfile ./setuptools-0.6c14devdev.egg/setuptools/__init__.pyc
binary ./setuptools-0.6c14devdev.egg/setuptools/__init__.pyc
oldhex
*
newhex
*d1f20d0a341ef84b6300000000000000000f0000004000000073330100006400005a0000640100
*6402006b01006c02005a02006c03005a0300016401006403006b04006c05005a05006c06005a06
*006c07005a0700016401006404006b08005a09006401006404006b0a005a0b006401006405006b
*0c006c0d005a0d00016401006406006b08006c0e005a0f00016401006407006b10006c11005a11
*00016401006404006b12005a13006408005a1400640900640a00640b00640c00640d00640e0064
*0f006707005a15006404005a17006410006414006411008402005a1800650900691900691a005a
*1a00650700650f008301005a0f00640c00650f00660100641200840000830000595a0e00640100
*6404006b08005a0900650e006509006919005f0e00651300691b006413008401005a1c00640100
*6404006b1d005a0900651c00650900691e005f1c00640400532815000000734000000045787465
*6e73696f6e7320746f207468652027646973747574696c732720666f72206c61726765206f7220
*636f6d706c657820646973747269627574696f6e7369ffffffff28020000007409000000457874
*656e73696f6e74070000004c6962726172792803000000740c000000446973747269627574696f
*6e740700000046656174757265740e0000005f6765745f756e706174636865644e280100000074
*070000005265717569726528010000007407000000436f6d6d616e642801000000740c00000063
*6f6e766572745f706174687305000000302e376131740500000073657475705202000000520300
*0000520600000052000000005205000000740d00000066696e645f7061636b6167657374010000
*002e63020000000b000000070000004300000073470100006700007d02007400007c0000830100
*6401006602006701007d030078c2007c03006fba00017c03006901006402008301005c02007d00
*007d0400789e007402006903007c0000830100445d8d007d05007402006904006905007c00007c
*05008302007d06006403007c05006a07006f6500017402006904006906007c06008301006f5200
*017402006904006907007402006904006905007c06006404008302008301006f3000017c020069
*08007c04007c050017830100017c03006908007c06007c04007c05001764030017660200830100
*01714a0001714a0057711e0001577860007409007c010083010064050067010017445d4b007d07
*006406006407006b0a006c0b007d080001670000047d09007c0200445d21007d0a007c08007c0a
*007c0700830200700b00017c09007c0a0012711501017115017e09007d020071f400577c020053
*2808000000738f01000052657475726e2061206c69737420616c6c20507974686f6e207061636b
*6167657320666f756e642077697468696e206469726563746f727920277768657265270a0a2020
*2020277768657265272073686f756c6420626520737570706c6965642061732061202263726f73
*732d706c6174666f726d222028692e652e2055524c2d7374796c652920706174683b2069740a20
*20202077696c6c20626520636f6e76657274656420746f2074686520617070726f707269617465
*206c6f63616c20706174682073796e7461782e2020276578636c7564652720697320610a202020
*2073657175656e6365206f66207061636b616765206e616d657320746f206578636c7564653b20
*272a272063616e206265207573656420617320612077696c646361726420696e207468650a2020
*20206e616d65732c207375636820746861742027666f6f2e2a272077696c6c206578636c756465
*20616c6c207375627061636b61676573206f662027666f6f272028627574206e6f740a20202020
*27666f6f2720697473656c66292e0a2020202074000000006900000000520a000000730b000000
*5f5f696e69745f5f2e70797408000000657a5f736574757069ffffffff2801000000740b000000
*666e6d6174636863617365280c00000052070000007403000000706f7074020000006f73740700
*00006c69737464697274040000007061746874040000006a6f696e740500000069736469727406
*000000697366696c657406000000617070656e6474040000006c6973747407000000666e6d6174
*6368520d000000280b0000007405000000776865726574070000006578636c7564657403000000
*6f75747405000000737461636b740600000070726566697874040000006e616d65740200000066
*6e7403000000706174520d00000074040000005f5b315d74040000006974656d28000000002800
*0000007340000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36633134
*6465766465762e6567675c7365747570746f6f6c735c5f5f696e69745f5f2e7079520900000012
*000000732200000000090601150103000701150110000601150120012202110028011400060110
*0139016300000000000000000200000042000000732c0000006500005a01006502006903005a03
*006504005a05006400008400005a06006401006402008401005a07005253280300000063020000
*0005000000050000004b00000073410000007400006901007c00007c010083020001782a007c02
*00690200830000445d1c005c02007d03007d04007403007c00007c03007c040083030001711d00
*576400005328010000004e280400000074080000005f436f6d6d616e6474080000005f5f696e69
*745f5f74050000006974656d737407000000736574617474722805000000740400000073656c66
*74040000006469737474020000006b7774010000006b7401000000762800000000280000000073
*40000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663313464657664
*65762e6567675c7365747570746f6f6c735c5f5f696e69745f5f2e707952230000003300000073
*08000000000210010d000c016900000000630300000007000000050000004b0000007346000000
*7400006901007c00007c01007c02008303007d0400782a007c0300690200830000445d1c005c02
*007d05007d06007403007c04007c05007c060083030001712200577c04005328010000004e2804
*000000522200000074140000007265696e697469616c697a655f636f6d6d616e64522400000052
*25000000280700000052260000007407000000636f6d6d616e6474120000007265696e69745f73
*7562636f6d6d616e647352280000007403000000636d645229000000522a000000280000000028
*000000007340000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331
*346465766465762e6567675c7365747570746f6f6c735c5f5f696e69745f5f2e7079522b000000
*39000000730a000000000115010d000c011401280800000074080000005f5f6e616d655f5f740a
*0000005f5f6d6f64756c655f5f522200000074070000005f5f646f635f5f740500000046616c73
*65741a000000636f6d6d616e645f636f6e73756d65735f617267756d656e74735223000000522b
*0000002800000000280000000028000000007340000000433a5c7461686f652d6c6166735c7365
*747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c5f5f
*696e69745f5f2e707952060000002e000000730800000006010902060209066301000000070000
*00080000004300000073bc0000006700007d010078af007400006901007c0000830100445d9e00
*5c03007d02007d03007d04007c02007400006902006a0200701a00017c02006903007400006902
*00740000690400178301006f0e00017c02006401001f7d02006e0100017c02006f340001670000
*047d05007c0400445d1c007d06007c05007400006905006906007c02007c060083020012716f00
*7e05007d04006e0100017c01006907007408007400006905006909007c04008302008301000171
*1600577c0100532802000000735e00000046696e6420616c6c2066696c657320756e6465722027
*6469722720616e642072657475726e20746865206c697374206f662066756c6c2066696c656e61
*6d65730a202020202872656c617469766520746f202764697227292e0a20202020690200000028
*0a000000520f000000740400000077616c6b7406000000637572646972740a0000007374617274
*73776974687403000000736570521100000052120000007406000000657874656e647406000000
*66696c7465725214000000280700000074030000006469727409000000616c6c5f66696c657374
*0400000062617365740400000064697273740500000066696c6573522000000074010000006628
*0000000028000000007340000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d
*302e366331346465766465762e6567675c7365747570746f6f6c735c5f5f696e69745f5f2e7079
*740700000066696e64616c6c4200000073120000000004060110000f012a010e01070134012001
*2800000000281f000000523100000074140000007365747570746f6f6c732e657874656e73696f
*6e52000000005201000000740f0000007365747570746f6f6c732e646973745202000000520300
*00005204000000740e000000646973747574696c732e636f72657409000000646973747574696c
*7374120000007365747570746f6f6c732e636f6d6d616e64740a0000007365747570746f6f6c73
*74120000007365747570746f6f6c732e646570656e647352050000005206000000522200000074
*0e000000646973747574696c732e7574696c520700000074070000006f732e70617468520f0000
*00740b0000005f5f76657273696f6e5f5f74070000005f5f616c6c5f5f74040000004e6f6e6574
*16000000626f6f7473747261705f696e7374616c6c5f66726f6d52090000007404000000636f72
*655208000000523500000052400000007412000000646973747574696c732e66696c656c697374
*740800000066696c656c6973742800000000280000000028000000007340000000433a5c746168
*6f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c736574
*7570746f6f6c735c5f5f696e69745f5f2e707974080000003c6d6f64756c653e01000000732800
*0000060116011c0118011001100110010c0206021201090306020f180c020c0216110c010c020f
*0d0c01
addfile ./setuptools-0.6c14devdev.egg/setuptools/archive_util.py
hunk ./setuptools-0.6c14devdev.egg/setuptools/archive_util.py 1
+"""Utilities for extracting common archive formats"""
+
+
+__all__ = [
+    "unpack_archive", "unpack_zipfile", "unpack_tarfile", "default_filter",
+    "UnrecognizedFormat", "extraction_drivers", "unpack_directory",
+]
+
+import zipfile, tarfile, os, shutil
+from pkg_resources import ensure_directory
+from distutils.errors import DistutilsError
+
+class UnrecognizedFormat(DistutilsError):
+    """Couldn't recognize the archive type"""
+
+def default_filter(src,dst):
+    """The default progress/filter callback; returns True for all files"""
+    return dst
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+def unpack_archive(filename, extract_dir, progress_filter=default_filter,
+    drivers=None
+):
+    """Unpack `filename` to `extract_dir`, or raise ``UnrecognizedFormat``
+
+    `progress_filter` is a function taking two arguments: a source path
+    internal to the archive ('/'-separated), and a filesystem path where it
+    will be extracted.  The callback must return the desired extract path
+    (which may be the same as the one passed in), or else ``None`` to skip
+    that file or directory.  The callback can thus be used to report on the
+    progress of the extraction, as well as to filter the items extracted or
+    alter their extraction paths.
+
+    `drivers`, if supplied, must be a non-empty sequence of functions with the
+    same signature as this function (minus the `drivers` argument), that raise
+    ``UnrecognizedFormat`` if they do not support extracting the designated
+    archive type.  The `drivers` are tried in sequence until one is found that
+    does not raise an error, or until all are exhausted (in which case
+    ``UnrecognizedFormat`` is raised).  If you do not supply a sequence of
+    drivers, the module's ``extraction_drivers`` constant will be used, which
+    means that ``unpack_zipfile`` and ``unpack_tarfile`` will be tried, in that
+    order.
+    """
+    for driver in drivers or extraction_drivers:
+        try:
+            driver(filename, extract_dir, progress_filter)
+        except UnrecognizedFormat:
+            continue
+        else:
+            return
+    else:
+        raise UnrecognizedFormat(
+            "Not a recognized archive type: %s" % filename
+        )
+
+
+
+
+
+
+
+def unpack_directory(filename, extract_dir, progress_filter=default_filter):
+    """"Unpack" a directory, using the same interface as for archives
+
+    Raises ``UnrecognizedFormat`` if `filename` is not a directory
+    """
+    if not os.path.isdir(filename):
+        raise UnrecognizedFormat("%s is not a directory" % (filename,))
+
+    paths = {filename:('',extract_dir)}
+    for base, dirs, files in os.walk(filename):
+        src,dst = paths[base]
+        for d in dirs:
+            paths[os.path.join(base,d)] = src+d+'/', os.path.join(dst,d)
+        for f in files:
+            name = src+f
+            target = os.path.join(dst,f)
+            target = progress_filter(src+f, target)
+            if not target:
+                continue    # skip non-files
+            ensure_directory(target)
+            f = os.path.join(base,f)
+            shutil.copyfile(f, target)
+            shutil.copystat(f, target)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+def unpack_zipfile(filename, extract_dir, progress_filter=default_filter):
+    """Unpack zip `filename` to `extract_dir`
+
+    Raises ``UnrecognizedFormat`` if `filename` is not a zipfile (as determined
+    by ``zipfile.is_zipfile()``).  See ``unpack_archive()`` for an explanation
+    of the `progress_filter` argument.
+    """
+
+    if not zipfile.is_zipfile(filename):
+        raise UnrecognizedFormat("%s is not a zip file" % (filename,))
+
+    z = zipfile.ZipFile(filename)
+    try:
+        for info in z.infolist():
+            name = info.filename
+
+            # don't extract absolute paths or ones with .. in them
+            if name.startswith('/') or '..' in name:
+                continue
+
+            target = os.path.join(extract_dir, *name.split('/'))
+            target = progress_filter(name, target)
+            if not target:
+                continue
+            if name.endswith('/'):
+                # directory
+                ensure_directory(target)
+            else:
+                # file
+                ensure_directory(target)
+                data = z.read(info.filename)
+                f = open(target,'wb')
+                try:
+                    f.write(data)
+                finally:
+                    f.close()
+                    del data
+    finally:
+        z.close()
+
+
+def unpack_tarfile(filename, extract_dir, progress_filter=default_filter):
+    """Unpack tar/tar.gz/tar.bz2 `filename` to `extract_dir`
+
+    Raises ``UnrecognizedFormat`` if `filename` is not a tarfile (as determined
+    by ``tarfile.open()``).  See ``unpack_archive()`` for an explanation
+    of the `progress_filter` argument.
+    """
+
+    try:
+        tarobj = tarfile.open(filename)
+    except tarfile.TarError:
+        raise UnrecognizedFormat(
+            "%s is not a compressed or uncompressed tar file" % (filename,)
+        )
+
+    try:
+        tarobj.chown = lambda *args: None   # don't do any chowning!
+        for member in tarobj:
+            if member.isfile() or member.isdir():
+                name = member.name
+                # don't extract absolute paths or ones with .. in them
+                if not name.startswith('/') and '..' not in name:
+                    dst = os.path.join(extract_dir, *name.split('/'))
+                    dst = progress_filter(name, dst)
+                    if dst:
+                        if dst.endswith(os.sep):
+                            dst = dst[:-1]
+                        try:
+                            tarobj._extract_member(member,dst)  # XXX Ugh
+                        except tarfile.ExtractError:
+                            pass    # chown/chmod/mkfifo/mknode/makedev failed
+        return True
+    finally:
+        tarobj.close()
+
+
+
+
+extraction_drivers = unpack_directory, unpack_zipfile, unpack_tarfile
+
+
addfile ./setuptools-0.6c14devdev.egg/setuptools/archive_util.pyc
binary ./setuptools-0.6c14devdev.egg/setuptools/archive_util.pyc
oldhex
*
newhex
*d1f20d0a341ef84b630000000000000000090000004000000073d60000006400005a0000640100
*6402006403006404006405006406006407006707005a01006408006409006b02005a0200640800
*6409006b03005a03006408006409006b04005a04006408006409006b05005a0500640800640a00
*6b06006c07005a070001640800640b006b08006c09005a090001640500650900660100640c0084
*0000830000595a0a00640d008400005a0b00650b00640900640e008402005a0d00650b00640f00
*8401005a0e00650b006410008401005a0f00650b006411008401005a1000650e00650f00651000
*6603005a1100640900532812000000732f0000005574696c697469657320666f72206578747261
*6374696e6720636f6d6d6f6e206172636869766520666f726d617473740e000000756e7061636b
*5f61726368697665740e000000756e7061636b5f7a697066696c65740e000000756e7061636b5f
*74617266696c65740e00000064656661756c745f66696c7465727412000000556e7265636f676e
*697a6564466f726d6174741200000065787472616374696f6e5f64726976657273741000000075
*6e7061636b5f6469726563746f727969ffffffff4e28010000007410000000656e737572655f64
*69726563746f72792801000000740e000000446973747574696c734572726f7263000000000000
*00000100000042000000730e0000006500005a01006400005a0200525328010000007323000000
*436f756c646e2774207265636f676e697a65207468652061726368697665207479706528030000
*0074080000005f5f6e616d655f5f740a0000005f5f6d6f64756c655f5f74070000005f5f646f63
*5f5f2800000000280000000028000000007344000000433a5c7461686f652d6c6166735c736574
*7570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c617263
*686976655f7574696c2e707952040000000d000000730200000006016302000000020000000100
*00004300000073040000007c010053280100000073400000005468652064656661756c74207072
*6f67726573732f66696c7465722063616c6c6261636b3b2072657475726e73205472756520666f
*7220616c6c2066696c657328000000002802000000740300000073726374030000006473742800
*00000028000000007344000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d30
*2e366331346465766465762e6567675c7365747570746f6f6c735c617263686976655f7574696c
*2e7079520300000010000000730200000000026304000000050000000800000043000000735d00
*00007856007c030070040001740000445d37007d04007914007c04007c00007c01007c02008303
*0001576e1600047401006a0a006f0a0001010101710e00710e00015864010053710e0057740100
*6402007c00001683010082010064010053280300000073a1040000556e7061636b206066696c65
*6e616d656020746f2060657874726163745f646972602c206f72207261697365206060556e7265
*636f676e697a6564466f726d617460600a0a202020206070726f67726573735f66696c74657260
*20697320612066756e6374696f6e2074616b696e672074776f20617267756d656e74733a206120
*736f7572636520706174680a20202020696e7465726e616c20746f207468652061726368697665
*2028272f272d736570617261746564292c20616e6420612066696c6573797374656d2070617468
*2077686572652069740a2020202077696c6c206265206578747261637465642e20205468652063
*616c6c6261636b206d7573742072657475726e2074686520646573697265642065787472616374
*20706174680a20202020287768696368206d6179206265207468652073616d6520617320746865
*206f6e652070617373656420696e292c206f7220656c73652060604e6f6e65606020746f20736b
*69700a20202020746861742066696c65206f72206469726563746f72792e20205468652063616c
*6c6261636b2063616e2074687573206265207573656420746f207265706f7274206f6e20746865
*0a2020202070726f6772657373206f66207468652065787472616374696f6e2c2061732077656c
*6c20617320746f2066696c74657220746865206974656d7320657874726163746564206f720a20
*202020616c7465722074686569722065787472616374696f6e2070617468732e0a0a2020202060
*64726976657273602c20696620737570706c6965642c206d7573742062652061206e6f6e2d656d
*7074792073657175656e6365206f662066756e6374696f6e732077697468207468650a20202020
*73616d65207369676e617475726520617320746869732066756e6374696f6e20286d696e757320
*7468652060647269766572736020617267756d656e74292c20746861742072616973650a202020
*206060556e7265636f676e697a6564466f726d61746060206966207468657920646f206e6f7420
*737570706f72742065787472616374696e67207468652064657369676e617465640a2020202061
*72636869766520747970652e202054686520606472697665727360206172652074726965642069
*6e2073657175656e636520756e74696c206f6e6520697320666f756e6420746861740a20202020
*646f6573206e6f7420726169736520616e206572726f722c206f7220756e74696c20616c6c2061
*7265206578686175737465642028696e20776869636820636173650a202020206060556e726563
*6f676e697a6564466f726d6174606020697320726169736564292e2020496620796f7520646f20
*6e6f7420737570706c7920612073657175656e6365206f660a20202020647269766572732c2074
*6865206d6f64756c65277320606065787472616374696f6e5f64726976657273606020636f6e73
*74616e742077696c6c20626520757365642c2077686963680a202020206d65616e732074686174
*206060756e7061636b5f7a697066696c65606020616e64206060756e7061636b5f74617266696c
*6560602077696c6c2062652074726965642c20696e20746861740a202020206f726465722e0a20
*2020204e73210000004e6f742061207265636f676e697a6564206172636869766520747970653a
*2025732802000000520500000052040000002805000000740800000066696c656e616d65740b00
*0000657874726163745f646972740f00000070726f67726573735f66696c746572740700000064
*7269766572737406000000647269766572280000000028000000007344000000433a5c7461686f
*652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c73657475
*70746f6f6c735c617263686976655f7574696c2e707952000000002a000000731200000000170e
*000601030114010e0108020802030163030000000d0000000700000043000000734b0100007400
*006901006902007c0000830100701700017403006401007c0000660100168301008201006e0100
*016801006402007c01006602007c0000367d03007807017400006904007c0000830100445df600
*5c03007d04007d05007d06007c03007c0400195c02007d07007d08007844007c0500445d3c007d
*09007c07007c090017640300177400006901006905007c08007c09008302006602007c03007400
*006901006905007c04007c09008302003c71730057788d007c0600445d85007d0a007c07007c0a
*00177d0b007400006901006905007c08007c0a008302007d0c007c02007c07007c0a00177c0c00
*8302007d0c007c0c007007000171ba006e0100017406007c0c0083010001740000690100690500
*7c04007c0a008302007d0a007407006908007c0a007c0c00830200017407006909007c0a007c0c
*008302000171ba0057714d0057640400532805000000738700000022556e7061636b2220612064
*69726563746f72792c207573696e67207468652073616d6520696e746572666163652061732066
*6f722061726368697665730a0a20202020526169736573206060556e7265636f676e697a656446
*6f726d61746060206966206066696c656e616d6560206973206e6f742061206469726563746f72
*790a2020202073150000002573206973206e6f742061206469726563746f727974000000007401
*0000002f4e280a00000074020000006f7374040000007061746874050000006973646972520400
*0000740400000077616c6b74040000006a6f696e5207000000740600000073687574696c740800
*0000636f707966696c657408000000636f707973746174280d000000520e000000520f00000052
*100000007405000000706174687374040000006261736574040000006469727374050000006669
*6c6573520c000000520d00000074010000006474010000006674040000006e616d657406000000
*746172676574280000000028000000007344000000433a5c7461686f652d6c6166735c73657475
*70746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c61726368
*6976655f7574696c2e70795206000000530000007328000000000513011702130110000f011001
*070006013a01070006010a0115011301070107010a011501100163030000000900000009000000
*4300000073360100007400006901007c0000830100701700017402006401007c00006601001683
*01008201006e0100017400006903007c00008301007d03007aee0078e7007c0300690400830000
*445dd9007d04007c04006905007d05007c0500690600640200830100700d00016403007c05006a
*06006f0700017146006e0100017407006908006909007c01007c0500690a006402008301008c01
*007d06007c02007c05007c06008302007d06007c0600700700017146006e0100017c0500690b00
*6402008301006f0e0001740c007c06008301000171460001740c007c0600830100017c0300690d
*007c04006905008301007d0700740e007c06006404008302007d08007a11007c0800690f007c07
*0083010001576405007c0800691000830000017e07005871460057576405007c03006910008300
*00015864050053280600000073f2000000556e7061636b207a6970206066696c656e616d656020
*746f2060657874726163745f646972600a0a20202020526169736573206060556e7265636f676e
*697a6564466f726d61746060206966206066696c656e616d6560206973206e6f742061207a6970
*66696c65202861732064657465726d696e65640a2020202062792060607a697066696c652e6973
*5f7a697066696c6528296060292e2020536565206060756e7061636b5f61726368697665282960
*6020666f7220616e206578706c616e6174696f6e0a202020206f6620746865206070726f677265
*73735f66696c7465726020617267756d656e742e0a2020202073140000002573206973206e6f74
*2061207a69702066696c65521400000073020000002e2e740200000077624e2811000000740700
*00007a697066696c65740a00000069735f7a697066696c65520400000074070000005a69704669
*6c657408000000696e666f6c697374520e000000740a0000007374617274737769746852150000
*0052160000005219000000740500000073706c69747408000000656e6473776974685207000000
*74040000007265616474040000006f70656e740500000077726974657405000000636c6f736528
*09000000520e000000520f000000521000000074010000007a7404000000696e666f5223000000
*52240000007404000000646174615222000000280000000028000000007344000000433a5c7461
*686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c7365
*747570746f6f6c735c617263686976655f7574696c2e707952010000007c000000732e00000000
*08100117020f0103010d00060109031d0107021e010f010701070110020e030a0112010f010301
*11020a010c026303000000070000000e0000004300000073450100007913007400006901007c00
*008301007d0300576e2900047400006902006a0a006f1a00010101017403006401007c00006601
*00168301008201006e020001587af4006402008400007c03005f040078dd007c0300445dd5007d
*04007c0400690500830000700d00017c04006906008300006fb500017c04006907007d05007c05
*006908006403008301000c6f9700016404007c05006a07006f8a0001740900690a00690b007c01
*007c0500690c006403008301008c01007d06007c02007c05007c06008302007d06007c06006f52
*00017c0600690d00740900690e008301006f0e00017c0600640500207d06006e0100017914007c
*0300690f007c04007c06008302000157712201047400006910006a0a006f070001010101712201
*015871260101712a0101715500017155005774110053576406007c030069120083000001586406
*0053280700000073fb000000556e7061636b207461722f7461722e677a2f7461722e627a322060
*66696c656e616d656020746f2060657874726163745f646972600a0a2020202052616973657320
*6060556e7265636f676e697a6564466f726d61746060206966206066696c656e616d6560206973
*206e6f7420612074617266696c65202861732064657465726d696e65640a202020206279206060
*74617266696c652e6f70656e28296060292e2020536565206060756e7061636b5f617263686976
*652829606020666f7220616e206578706c616e6174696f6e0a202020206f662074686520607072
*6f67726573735f66696c7465726020617267756d656e742e0a20202020732f0000002573206973
*206e6f74206120636f6d70726573736564206f7220756e636f6d70726573736564207461722066
*696c65630000000001000000010000005700000073040000006400005328010000004e28010000
*0074040000004e6f6e652801000000740400000061726773280000000028000000007344000000
*433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e65
*67675c7365747570746f6f6c735c617263686976655f7574696c2e707974080000003c6c616d62
*64613eb50000007300000000521400000073020000002e2e69ffffffff4e281300000074070000
*0074617266696c65522e00000074080000005461724572726f725204000000740500000063686f
*776e7406000000697366696c6552170000005223000000522a0000005215000000521600000052
*19000000522b000000522c0000007403000000736570740f0000005f657874726163745f6d656d
*626572740c000000457874726163744572726f7274040000005472756552300000002807000000
*520e000000520f000000521000000074060000007461726f626a74060000006d656d6265725223
*000000520d000000280000000028000000007344000000433a5c7461686f652d6c6166735c7365
*747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c6172
*63686976655f7574696c2e70795202000000a5000000732e000000000803011301110103011503
*03010c01070006011a0109021e011e010f01070113010e01030114011101150108022812000000
*520b00000074070000005f5f616c6c5f5f522600000052370000005215000000521a000000740d
*000000706b675f7265736f757263657352070000007410000000646973747574696c732e657272
*6f7273520800000052040000005203000000523400000052000000005206000000520100000052
*0200000052050000002800000000280000000028000000007344000000433a5c7461686f652d6c
*6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f
*6f6c735c617263686976655f7574696c2e707974080000003c6d6f64756c653e01000000731a00
*000006040c010f033001100110021603091a03010c280c290c290c26
addfile ./setuptools-0.6c14devdev.egg/setuptools/cli.exe
binary ./setuptools-0.6c14devdev.egg/setuptools/cli.exe
oldhex
*
newhex
*4d5a90000300000004000000ffff0000b800000000000000400000000000000000000000000000
*000000000000000000000000000000000000000000800000000e1fba0e00b409cd21b8014ccd21
*546869732070726f6772616d2063616e6e6f742062652072756e20696e20444f53206d6f64652e
*0d0d0a2400000000000000504500004c01050049c7b7450000000000000000e0000f030b010238
*000e00000008000000020000701200000010000000200000000040000010000000020000040000
*000100000004000000000000000060000000040000ef6c00000300000000002000001000000000
*1000001000000000000010000000000000000000000000500000d4030000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000002e74657874000000f00c00000010
*0000000e000000040000000000000000000000000000200000602e646174610000003000000000
*2000000002000000120000000000000000000000000000400000c02e7264617461000050000000
*003000000002000000140000000000000000000000000000400000402e62737300000000600000
*00004000000000000000000000000000000000000000000000800000c02e69646174610000d403
*0000005000000004000000160000000000000000000000000000400000c0000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000005589e583ec18895df88b450831db8975fc8b0031f68b003d910000c077
*433d8d0000c0725bbe01000000c704240800000031d289542404e8740b000083f801747a85c074
*0ec7042408000000ffd0bbffffffff89d88b75fc8b5df889ec5dc204003d940000c074c2774a3d
*930000c074b489d88b75fc8b5df889ec5dc20400903d050000c0745b3d1d0000c075c5c7042404
*00000031f689742404e8100b000083f801746a85c074aac7042404000000ffd0eb9a3d960000c0
*ebd1c7042408000000b80100000089442404e8e00a000085f60f8476ffffffe863090000e96cff
*ffffc704240b00000031c089442404e8bc0a000083f801743085c00f8452ffffffc704240b0000
*00ffd0e93fffffffc7042404000000b901000000894c2404e88c0a0000e925ffffffc704240b00
*0000b80100000089442404e8720a0000e90bffffff8db6000000008dbc27000000005589e55383
*ec24c7042400104000e8fd0a000083ec04e8d5080000c745f8000000008d45f889442410a10020
*4000c70424044040008944240c8d45f489442408b80040400089442404e8420a0000a110404000
*85c07459a3102040008b151c51400085d20f858b00000083fae0741fa11040400089442404a11c
*5140008b4030890424e8f80900008b151c51400083fac0741da11040400089442404a11c514000
*8b4050890424e8d40900008d742600e8bb0900008b15102040008910e8fe07000083e4f0e88609
*00008b0089442408a10040400089442404a104404000890424e8ba06000089c3e853090000891c
*24e82b0a000089442404a11c5140008b4010890424e8770900008b151c514000e956ffffff8db6
*000000008dbf000000005589e583ec08c7042401000000ff1514514000e8c8feffff908db42600
*0000005589e583ec08c7042402000000ff1514514000e8a8feffff908db42600000000558b0d30
*51400089e55dffe18d742600558b0d2451400089e55dffe1909090905589e583ec188b450c8944
*24088b450889442404a11c51400083c040890424e85c090000b802000000c9c35589e557565383
*ec0c8b750889f7fcb9ffffffffb000f2aef7d18d79ffc7442404010000008d443f03890424e814
*0900008945f0c6002289c242b900000000bb0000000039f97d33803c1e5c750341eb1e803c1e22
*751385c97e09c6025c424985c97ff7c6025c42eb05b9000000000fb6041e8802424339fb7ccd85
*c97e09c6025c424985c97ff7c60222c64201008b45f083c40c5b5e5f5dc35589e5565383ec10c7
*44240808000000c7442404000000008b4508890424e8c808000083ec0c89c6b80000000085f674
*3ec744240401000000c7042404010000e86608000089c385c07417c74424080401000089442404
*893424e89c08000083ec0c893424e8a108000083ec0489d88d65f85b5e5dc35589e557565381ec
*4c0400008b75088d5e010fb61684d2741380fa2f7504c643ff5c0fb6034388c284c075ed8d85d8
*fcffff894424108d85d8fdffff8944240c8d85d8feffff894424088d45d889442404893424e8cc
*070000807dd800750980bdd8feffff5c750d893424e81affffffe9990000008d85d8fcffff8944
*24108d85d8fdffff8944240c8d9dd8feffff895c24088d45d8894424048b450c890424e8800700
*0089dffcb9ffffffffb000f2aef7d18d5c19fe803b5c75064b803b5c74198d85d8feffff89c239
*d8770dc603004b803b5c740439da76f3c7442410000000008974240c8d85d8feffff894424088d
*45d8894424048d9dc8fbffff891c24e80f070000891c24e87cfeffff81c44c0400005b5e5f5dc3
*5589e557565383ec1c8b5d0889dffcb9ffffffffb000f2aef7d149c744240404000000890c24e8
*f10600008945f089debf00000000c745e8000000008b450cc700000000008b55f0891aeb01430f
*be03890424e89406000085c075f00fb603438845ef84c074150fbec0890424e87a06000085c074
*47837de800754185ff7407c6065c464f75f9c60600468b550c8b024089028b55f0893482807def
*00750589d0eb65430fbe03890424e83d06000085c075f0803b0075a48b45f0eb4b807def5c7503
*47eb96807def22751bf7c7010000007511837de8000f94c00fb6c08945e8c645ef00d1ff85ff74
*07c6065c464f75f9807def000f8460ffffff0fb645ef880646e954ffffff83c41c5b5e5f5dc355
*89e557565381ec2c020000c7442408000100008d9de8fdffff895c2404c7042400000000e83206
*000083ec0c89dffcb9ffffffffb000f2aef7d18d7419ff39f37314803e2e740f89d8c606004e39
*f07305803e2e75f3c606008db5e8fdffff89f7fcb9ffffffffb000f2aef7d149c7040e2d736372
*c7440e046970742e66c7440e087079c6440e0a00c744240400000000893424e8a204000089c383
*f8ff751589742404c7042400304000e8ebfbffffe9c50100008db5e8feffffc744240800010000
*89742404890424e85c04000001c6891c24e8420400008dbde7feffff4739f7730f803f00740a80
*3f0a7405803f0d75ecc607008db5e8feffffbf10304000b902000000fcf3a60f97c20f92c038c2
*7425c785e8feffff23217079c785ecfeffff74686f6ec785f0feffff2e657865c685f4feffff00
*8d85e4fdffff894424048d85eafeffff890424e89ffdffff8985dcfdffff8d85e8fdffff894424
*048b95dcfdffff8b02890424e866fcffff89c785c0751d8b95dcfdffff8b0289442404c7042414
*304000e80dfbffffe9e7000000c7442404040000008b45080385e4fdffff40890424e85e040000
*8985e0fdffff893c24e80bfbffff8b95e0fdffff890289d383c304be010000003bb5e4fdffff7d
*1f8b95dcfdffff8b04b2890424e8e0faffff890383c304463bb5e4fdffff7ce18d85e8fdffff89
*0424e8c4faffff890383c304be010000003b75087d198b550c8b04b2890424e8a7faffff890383
*c304463b75087ce7c70300000000837d1000742a8b85e0fdffff894424048d9de8feffff891c24
*e8bd020000895c2404c7042436304000e83dfaffffeb1a8b95e0fdffff89542408897c2404c704
*2400000000e8810200008d65f45b5e5f5dc35589e55383ec14e82d03000089c3e836030000c744
*2408000000008b13895424048b00890424e852fdffff83c4145b5dc2100090909090909055b810
*00000089e55383ec6483e4f0e8fc010000e8d7010000e8a203000089c38d45a8890424e8a50300
*0083ec0485db7506e99d000000430fb60b80f9200f94c080f9090f94c209d0a80175ea80f92274
*3e80f9200f95c031d280f9090f95c285d0744c8db6000000008dbf0000000084c9743c430fb60b
*80f9200f95c031d280f9090f95c285d075e6eb248d742600430fb60b80f9220f95c031d284c90f
*95c285d075eb80f92274668db60000000080f9200f94c080f9090f94c2eb1089f6430fb6033c20
*0f94c23c090f94c009d0a80175ecc7042400000000e80003000083ec04f645d401ba0a00000074
*040fb755d88954240c31d2895c240889542404890424e8bffeffff83ec108b5dfcc9c3430fb60b
*eb9a9090909090909090909055b95030400089e5eb148db6000000008b51048b0183c108018200
*00400081f95030400072ea5dc390909090909090905589e5dbe35dc39090909090909090905589
*e583ec08a1202040008338007417ff108b15202040008d42048b5204a32020400085d275e9c9c3
*8db426000000005589e55383ec04a1e01c400083f8ff742985c089c3741389f68dbc2700000000
*ff149de01c40004b75f6c70424501a4000e8faf7ffff595b5dc331c0833de41c400000eb0a408b
*1c85e41c400085db75f4ebbe8db6000000008dbc270000000055a12040400089e585c074045dc3
*89f65db801000000a320404000eb839090905189e183c1083d00100000721081e9001000008309
*002d00100000ebe929c183090089e089cc8b088b4004ffe0909090ff25f4504000909000000000
*00000000ff25e850400090900000000000000000ff25e450400090900000000000000000ff25f0
*50400090900000000000000000ff25ec50400090900000000000000000ff251451400090900000
*000000000000ff251851400090900000000000000000ff250c51400090900000000000000000ff
*254051400090900000000000000000ff251051400090900000000000000000ff25285140009090
*0000000000000000ff250051400090900000000000000000ff2508514000909000000000000000
*00ff250451400090900000000000000000ff253c51400090900000000000000000ff2520514000
*90900000000000000000ff252c51400090900000000000000000ff253451400090900000000000
*000000ff253851400090900000000000000000ff256851400090900000000000000000ff254c51
*400090900000000000000000ff256451400090900000000000000000ff25585140009090000000
*0000000000ff255051400090900000000000000000ff255451400090900000000000000000ff25
*6051400090900000000000000000ff255c51400090900000000000000000ffffffff00000000ff
*ffffff000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000ffffffff00000000000000000000000000400000000000000000000000000000ec
*1c4000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000043616e6e6f74206f70656e2025730a002321000043616e6e6f742066
*696e6420507974686f6e2065786563757461626c652025730a00436f756c64206e6f7420657865
*632025730000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*0000000000000000000000000000000054500000000000000000000048530000e4500000705000
*0000000000000000009853000000510000bc5000000000000000000000c45300004c5100000000
*00000000000000000000000000000000000000000000705100007c510000885100009051000098
*5100000000000000000000a4510000b4510000c4510000d4510000e4510000f451000008520000
*145200001c520000285200003452000040520000505200005c5200006852000074520000805200
*0000000000000000008c5200009c520000ac520000c0520000d8520000ec520000005300001453
*00000000000000000000705100007c5100008851000090510000985100000000000000000000a4
*510000b4510000c4510000d4510000e4510000f451000008520000145200001c52000028520000
*3452000040520000505200005c52000068520000745200008052000000000000000000008c5200
*009c520000ac520000c0520000d8520000ec52000000530000145300000000000006005f636c6f
*73650000000012005f6578656376000000003a005f6f70656e0040005f72656164004b005f7370
*61776e7600000027005f5f6765746d61696e617267730031005f5f705f5f5f6172676300000000
*32005f5f705f5f5f61726776000000003c005f5f705f5f656e7669726f6e00003e005f5f705f5f
*666d6f64650000000050005f5f7365745f6170705f747970650000000079005f63657869740000
*0000e9005f696f6200001f015f6d616b6570617468005e015f6f6e6578697400000084015f7365
*746d6f6465000092015f73706c697470617468000000001c026174657869740000000021026361
*6c6c6f63000000003902667072696e74660000005a026973737061636500000090027369676e61
*6c000000009b004578697450726f63657373000000d500467265654c696272617279000000ec00
*476574436f6d6d616e644c696e65410000004d014765744d6f64756c6546696c654e616d654100
*0000004f014765744d6f64756c6548616e646c65410000800147657453746172747570496e666f
*410000000b024c6f61644c69627261727945784100000000df02536574556e68616e646c656445
*7863657074696f6e46696c74657200000000500000005000000050000000500000005000006d73
*766372742e646c6c00001450000014500000145000001450000014500000145000001450000014
*500000145000001450000014500000145000001450000014500000145000001450000014500000
*6d73766372742e646c6c0000285000002850000028500000285000002850000028500000285000
*00285000004b45524e454c33322e646c6c00000000000000000000000000000000000000000000
*0000000000000000000000000000000000000000000000000000
adddir ./setuptools-0.6c14devdev.egg/setuptools/command
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/__init__.py
hunk ./setuptools-0.6c14devdev.egg/setuptools/command/__init__.py 1
+__all__ = [
+    'alias', 'bdist_egg', 'bdist_rpm', 'build_ext', 'build_py', 'develop',
+    'easy_install', 'egg_info', 'install', 'install_lib', 'rotate', 'saveopts',
+    'sdist', 'setopt', 'test', 'upload', 'install_egg_info', 'install_scripts',
+    'register', 'bdist_wininst',
+]
+
+import sys
+if sys.version>='2.5':
+    # In Python 2.5 and above, distutils includes its own upload command
+    __all__.remove('upload')
+
+
+from distutils.command.bdist import bdist
+
+if 'egg' not in bdist.format_commands:
+    bdist.format_command['egg'] = ('bdist_egg', "Python .egg file")
+    bdist.format_commands.append('egg')
+
+del bdist, sys
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/__init__.pyc
binary ./setuptools-0.6c14devdev.egg/setuptools/command/__init__.pyc
oldhex
*
newhex
*d1f20d0a361ef84b630000000000000000140000004000000073ba000000640000640100640200
*640300640400640500640600640700640800640900640a00640b00640c00640d00640e00640f00
*6410006411006412006413006714005a00006414006415006b01005a0100650100690200641600
*6a05006f110001650000690300640f00830100016e0100016414006417006b04006c05005a0500
*016418006505006906006a07006f210001641a006505006907006418003c650500690600690800
*641800830100016e0100015b05005b010064150053281b0000007405000000616c696173740900
*000062646973745f656767740900000062646973745f72706d74090000006275696c645f657874
*74080000006275696c645f70797407000000646576656c6f70740c000000656173795f696e7374
*616c6c74080000006567675f696e666f7407000000696e7374616c6c740b000000696e7374616c
*6c5f6c69627406000000726f746174657408000000736176656f70747374050000007364697374
*74060000007365746f7074740400000074657374740600000075706c6f61647410000000696e73
*74616c6c5f6567675f696e666f740f000000696e7374616c6c5f73637269707473740800000072
*65676973746572740d00000062646973745f77696e696e737469ffffffff4e7303000000322e35
*28010000007405000000626469737474030000006567677310000000507974686f6e202e656767
*2066696c65280200000052010000007310000000507974686f6e202e6567672066696c65280900
*000074070000005f5f616c6c5f5f7403000000737973740700000076657273696f6e7406000000
*72656d6f76657417000000646973747574696c732e636f6d6d616e642e62646973745214000000
*740f000000666f726d61745f636f6d6d616e6473740e000000666f726d61745f636f6d6d616e64
*7406000000617070656e642800000000280000000028000000007348000000433a5c7461686f65
*2d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c7365747570
*746f6f6c735c636f6d6d616e645c5f5f696e69745f5f2e707974080000003c6d6f64756c653e02
*00000073160000001201120112010c030c0110021103100210010d011402
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/alias.py
hunk ./setuptools-0.6c14devdev.egg/setuptools/command/alias.py 1
+import distutils, os
+from setuptools import Command
+from distutils.util import convert_path
+from distutils import log
+from distutils.errors import *
+from setuptools.command.setopt import edit_config, option_base, config_file
+
+def shquote(arg):
+    """Quote an argument for later parsing by shlex.split()"""
+    for c in '"', "'", "\\", "#":
+        if c in arg: return repr(arg)
+    if arg.split()<>[arg]:
+        return repr(arg)
+    return arg
+
+
+class alias(option_base):
+    """Define a shortcut that invokes one or more commands"""
+
+    description = "define a shortcut to invoke one or more commands"
+    command_consumes_arguments = True
+
+    user_options = [
+        ('remove',   'r', 'remove (unset) the alias'),
+    ] + option_base.user_options
+
+    boolean_options = option_base.boolean_options + ['remove']
+
+    def initialize_options(self):
+        option_base.initialize_options(self)
+        self.args = None
+        self.remove = None
+
+    def finalize_options(self):
+        option_base.finalize_options(self)
+        if self.remove and len(self.args)<>1:
+            raise DistutilsOptionError(
+                "Must specify exactly one argument (the alias name) when "
+                "using --remove"
+            )
+
+    def run(self):
+        aliases = self.distribution.get_option_dict('aliases')
+
+        if not self.args:
+            print "Command Aliases"
+            print "---------------"
+            for alias in aliases:
+                print "setup.py alias", format_alias(alias, aliases)
+            return
+
+        elif len(self.args)==1:
+            alias, = self.args
+            if self.remove:
+                command = None
+            elif alias in aliases:
+                print "setup.py alias", format_alias(alias, aliases)
+                return
+            else:
+                print "No alias definition found for %r" % alias
+                return
+        else:
+            alias = self.args[0]
+            command = ' '.join(map(shquote,self.args[1:]))
+
+        edit_config(self.filename, {'aliases': {alias:command}}, self.dry_run)
+
+
+def format_alias(name, aliases):
+    source, command = aliases[name]
+    if source == config_file('global'):
+        source = '--global-config '
+    elif source == config_file('user'):
+        source = '--user-config '
+    elif source == config_file('local'):
+        source = ''
+    else:
+        source = '--filename=%r' % source
+    return source+name+' '+command
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/alias.pyc
binary ./setuptools-0.6c14devdev.egg/setuptools/command/alias.pyc
oldhex
*
newhex
*d1f20d0a381ef84b6300000000000000000a00000040000000739a0000006400006401006b0000
*5a00006400006401006b01005a01006400006402006b02006c03005a0300016400006403006b04
*006c05005a0500016400006404006b00006c06005a0600016400006405006b0700546400006406
*006b08006c09005a09006c0a005a0a006c0b005a0b00016407008400005a0c00640800650a0066
*0100640900840000830000595a0d00640a008400005a0e0064010053280b00000069ffffffff4e
*28010000007407000000436f6d6d616e642801000000740c000000636f6e766572745f70617468
*280100000074030000006c6f67280100000074010000002a2803000000740b000000656469745f
*636f6e666967740b0000006f7074696f6e5f62617365740b000000636f6e6669675f66696c6563
*01000000020000000400000043000000734e000000782600640500445d1e007d01007c01007c00
*006a06006f0b00017400007c00008301005301710700577c00006901008300007c00006701006a
*03006f0b00017400007c000083010053017c0000532806000000733400000051756f746520616e
*20617267756d656e7420666f72206c617465722070617273696e672062792073686c65782e7370
*6c6974282974010000002274010000002773010000005c74010000002328040000005207000000
*520800000073010000005c52090000002802000000740400000072657072740500000073706c69
*74280200000074030000006172677401000000632800000000280000000073310000006275696c
*645c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c616c
*6961732e70797407000000736871756f746508000000730e0000000002070006010d000f011601
*0b017405000000616c696173630000000000000000030000004200000073550000006500005a01
*006400005a02006401005a03006504005a0500640800670100650600690700175a070065060069
*0800640200670100175a08006405008400005a09006406008400005a0a006407008400005a0b00
*525328090000007333000000446566696e6520612073686f7274637574207468617420696e766f
*6b6573206f6e65206f72206d6f726520636f6d6d616e64737330000000646566696e6520612073
*686f727463757420746f20696e766f6b65206f6e65206f72206d6f726520636f6d6d616e647374
*0600000072656d6f7665740100000072731800000072656d6f76652028756e7365742920746865
*20616c696173630100000001000000020000004300000073230000007400006901007c00008301
*00016400007c00005f03006400007c00005f04006400005328010000004e280500000052050000
*007412000000696e697469616c697a655f6f7074696f6e7374040000004e6f6e65740400000061
*72677352100000002801000000740400000073656c662800000000280000000073310000006275
*696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c
*616c6961732e707952120000001d000000730600000000010d0109016301000000010000000200
*00004300000073410000007400006901007c0000830100017c00006902006f2600017403007c00
*006904008301006401006a03006f1000017405006402008301008201006e010001640000532803
*0000004e690100000073460000004d75737420737065636966792065786163746c79206f6e6520
*617267756d656e74202874686520616c696173206e616d6529207768656e207573696e67202d2d
*72656d6f766528060000005205000000741000000066696e616c697a655f6f7074696f6e735210
*00000074030000006c656e52140000007414000000446973747574696c734f7074696f6e457272
*6f72280100000052150000002800000000280000000073310000006275696c645c62646973742e
*77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c616c6961732e70795216
*00000022000000730800000000010d01200103016301000000040000000800000043000000730d
*0100007c00006900006901006401008301007d01007c0000690200703200016402004748640300
*47487820007c0100445d18007d0200640400477403007c02007c01008302004748712d00576400
*0053017404007c00006902008301006405006a02006f5500017c00006902005c01007d02007c00
*006905006f0a00016400007d030071e500017c02007c01006a06006f170001640400477403007c
*02007c0100830200474864000053016406007c0200164748640000536e2d00017c000069020064
*0700197d02006408006907007408007409007c00006902006405001f8302008301007d0300740a
*007c0000690b006801006801007c03007c020036640100367c0000690c00830300016400005328
*090000004e7407000000616c6961736573730f000000436f6d6d616e6420416c6961736573730f
*0000002d2d2d2d2d2d2d2d2d2d2d2d2d2d2d730e00000073657475702e707920616c6961736901
*00000073200000004e6f20616c69617320646566696e6974696f6e20666f756e6420666f722025
*726900000000740100000020280d000000740c000000646973747269627574696f6e740f000000
*6765745f6f7074696f6e5f646963745214000000740c000000666f726d61745f616c6961735217
*0000005210000000521300000074040000006a6f696e74030000006d6170520e00000052040000
*00740800000066696c656e616d6574070000006472795f72756e28040000005215000000521900
*0000520f0000007407000000636f6d6d616e642800000000280000000073310000006275696c64
*5c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c616c69
*61732e7079740300000072756e2a0000007328000000000112020a010501050107000601160105
*0216010c010a010a010d0112010502090108020d011f022803000000730600000072656d6f7665
*5211000000731800000072656d6f76652028756e736574292074686520616c696173280c000000
*74080000005f5f6e616d655f5f740a0000005f5f6d6f64756c655f5f74070000005f5f646f635f
*5f740b0000006465736372697074696f6e740400000054727565741a000000636f6d6d616e645f
*636f6e73756d65735f617267756d656e74735205000000740c000000757365725f6f7074696f6e
*73740f000000626f6f6c65616e5f6f7074696f6e73521200000052160000005223000000280000
*00002800000000280000000073310000006275696c645c62646973742e77696e33325c6567675c
*7365747570746f6f6c735c636f6d6d616e645c616c6961732e7079520f00000011000000731200
*0000060106020601060306010a0210020905090863020000000400000003000000430000007381
*0000007c01007c0000195c02007d02007d03007c02007400006401008301006a02006f0a000164
*02007d02006e4500017c02007400006403008301006a02006f0a00016404007d02006e2800017c
*02007400006405008301006a02006f0a00016406007d02006e0b00016407007c0200167d02007c
*02007c000017640800177c0300175328090000004e7406000000676c6f62616c73100000002d2d
*676c6f62616c2d636f6e66696720740400000075736572730e0000002d2d757365722d636f6e66
*69672074050000006c6f63616c7400000000730d0000002d2d66696c656e616d653d2572521a00
*000028010000005206000000280400000074040000006e616d6552190000007406000000736f75
*72636552220000002800000000280000000073310000006275696c645c62646973742e77696e33
*325c6567675c7365747570746f6f6c735c636f6d6d616e645c616c6961732e7079521d00000045
*00000073120000000001100113010a0113010a0113010a020a01280f0000007409000000646973
*747574696c7374020000006f73740a0000007365747570746f6f6c735200000000740e00000064
*6973747574696c732e7574696c520100000052020000007410000000646973747574696c732e65
*72726f727374190000007365747570746f6f6c732e636f6d6d616e642e7365746f707452040000
*0052050000005206000000520e000000520f000000521d00000028000000002800000000280000
*000073310000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c73
*5c636f6d6d616e645c616c6961732e707974080000003c6d6f64756c653e010000007310000000
*18011001100110010a011c0209091634
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/bdist_egg.py
hunk ./setuptools-0.6c14devdev.egg/setuptools/command/bdist_egg.py 1
+"""setuptools.command.bdist_egg
+
+Build .egg distributions"""
+
+# This module should be kept compatible with Python 2.3
+import sys, os, marshal
+from setuptools import Command
+from distutils.dir_util import remove_tree, mkpath
+from distutils.sysconfig import get_python_version, get_python_lib
+from distutils import log
+from distutils.errors import DistutilsSetupError
+from pkg_resources import get_build_platform, Distribution, ensure_directory
+from pkg_resources import EntryPoint
+from types import CodeType
+from setuptools.extension import Library
+
+def strip_module(filename):
+    if '.' in filename:
+        filename = os.path.splitext(filename)[0]
+    if filename.endswith('module'):
+        filename = filename[:-6]
+    return filename
+
+def write_stub(resource, pyfile):
+    f = open(pyfile,'w')
+    f.write('\n'.join([
+        "def __bootstrap__():",
+        "   global __bootstrap__, __loader__, __file__",
+        "   import sys, pkg_resources, imp",
+        "   __file__ = pkg_resources.resource_filename(__name__,%r)"
+            % resource,
+        "   __loader__ = None; del __bootstrap__, __loader__",
+        "   imp.load_dynamic(__name__,__file__)",
+        "__bootstrap__()",
+        "" # terminal \n
+    ]))
+    f.close()
+
+# stub __init__.py for packages distributed without one
+NS_PKG_STUB = '__import__("pkg_resources").declare_namespace(__name__)'
+
+class bdist_egg(Command):
+
+    description = "create an \"egg\" distribution"
+
+    user_options = [
+        ('bdist-dir=', 'b',
+            "temporary directory for creating the distribution"),
+        ('plat-name=', 'p',
+                     "platform name to embed in generated filenames "
+                     "(default: %s)" % get_build_platform()),
+        ('exclude-source-files', None,
+                     "remove all .py files from the generated egg"),
+        ('keep-temp', 'k',
+                     "keep the pseudo-installation tree around after " +
+                     "creating the distribution archive"),
+        ('dist-dir=', 'd',
+                     "directory to put final built distributions in"),
+        ('skip-build', None,
+                     "skip rebuilding everything (for testing/debugging)"),
+    ]
+
+    boolean_options = [
+        'keep-temp', 'skip-build', 'exclude-source-files'
+    ]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    def initialize_options (self):
+        self.bdist_dir = None
+        self.plat_name = None
+        self.keep_temp = 0
+        self.dist_dir = None
+        self.skip_build = 0
+        self.egg_output = None
+        self.exclude_source_files = None
+
+
+    def finalize_options(self):
+        ei_cmd = self.ei_cmd = self.get_finalized_command("egg_info")
+        self.egg_info = ei_cmd.egg_info
+
+        if self.bdist_dir is None:
+            bdist_base = self.get_finalized_command('bdist').bdist_base
+            self.bdist_dir = os.path.join(bdist_base, 'egg')
+
+        if self.plat_name is None:
+            self.plat_name = get_build_platform()
+
+        self.set_undefined_options('bdist',('dist_dir', 'dist_dir'))
+
+        if self.egg_output is None:
+
+            # Compute filename of the output egg
+            basename = Distribution(
+                None, None, ei_cmd.egg_name, ei_cmd.egg_version,
+                get_python_version(),
+                self.distribution.has_ext_modules() and self.plat_name
+            ).egg_name()
+
+            self.egg_output = os.path.join(self.dist_dir, basename+'.egg')
+
+
+
+
+
+
+
+
+    def do_install_data(self):
+        # Hack for packages that install data to install's --install-lib
+        self.get_finalized_command('install').install_lib = self.bdist_dir
+
+        site_packages = os.path.normcase(os.path.realpath(get_python_lib()))
+        old, self.distribution.data_files = self.distribution.data_files,[]
+
+        for item in old:
+            if isinstance(item,tuple) and len(item)==2:
+                if os.path.isabs(item[0]):
+                    realpath = os.path.realpath(item[0])
+                    normalized = os.path.normcase(realpath)
+                    if normalized==site_packages or normalized.startswith(
+                        site_packages+os.sep
+                    ):
+                        item = realpath[len(site_packages)+1:], item[1]
+                    # XXX else: raise ???
+            self.distribution.data_files.append(item)
+
+        try:
+            log.info("installing package data to %s" % self.bdist_dir)
+            self.call_command('install_data', force=0, root=None)
+        finally:
+            self.distribution.data_files = old
+
+
+    def get_outputs(self):
+        return [self.egg_output]
+
+
+    def call_command(self,cmdname,**kw):
+        """Invoke reinitialized command `cmdname` with keyword args"""
+        for dirname in INSTALL_DIRECTORY_ATTRS:
+            kw.setdefault(dirname,self.bdist_dir)
+        kw.setdefault('skip_build',self.skip_build)
+        kw.setdefault('dry_run', self.dry_run)
+        cmd = self.reinitialize_command(cmdname, **kw)
+        self.run_command(cmdname)
+        return cmd
+
+
+    def run(self):
+        # Generate metadata first
+        self.run_command("egg_info")
+
+        # We run install_lib before install_data, because some data hacks
+        # pull their data path from the install_lib command.
+        log.info("installing library code to %s" % self.bdist_dir)
+        instcmd = self.get_finalized_command('install')
+        old_root = instcmd.root; instcmd.root = None
+        cmd = self.call_command('install_lib', warn_dir=0)
+        instcmd.root = old_root
+
+        all_outputs, ext_outputs = self.get_ext_outputs()
+        self.stubs = []
+        to_compile = []
+        for (p,ext_name) in enumerate(ext_outputs):
+            filename,ext = os.path.splitext(ext_name)
+            pyfile = os.path.join(self.bdist_dir, strip_module(filename)+'.py')
+            self.stubs.append(pyfile)
+            log.info("creating stub loader for %s" % ext_name)
+            if not self.dry_run:
+                write_stub(os.path.basename(ext_name), pyfile)
+            to_compile.append(pyfile)
+            ext_outputs[p] = ext_name.replace(os.sep,'/')
+
+        to_compile.extend(self.make_init_files())
+        if to_compile:
+            cmd.byte_compile(to_compile)
+
+        if self.distribution.data_files:
+            self.do_install_data()
+
+        # Make the EGG-INFO directory
+        archive_root = self.bdist_dir
+        egg_info = os.path.join(archive_root,'EGG-INFO')
+        self.mkpath(egg_info)
+        if self.distribution.scripts:
+            script_dir = os.path.join(egg_info, 'scripts')
+            log.info("installing scripts to %s" % script_dir)
+            self.call_command('install_scripts',install_dir=script_dir,no_ep=1)
+
+        self.copy_metadata_to(egg_info)
+        native_libs = os.path.join(egg_info, "native_libs.txt")
+        if all_outputs:
+            log.info("writing %s" % native_libs)
+            if not self.dry_run:
+                ensure_directory(native_libs)
+                libs_file = open(native_libs, 'wt')
+                libs_file.write('\n'.join(all_outputs))
+                libs_file.write('\n')
+                libs_file.close()
+        elif os.path.isfile(native_libs):
+            log.info("removing %s" % native_libs)
+            if not self.dry_run:
+                os.unlink(native_libs)
+
+        write_safety_flag(
+            os.path.join(archive_root,'EGG-INFO'), self.zip_safe()
+        )
+
+        if os.path.exists(os.path.join(self.egg_info,'depends.txt')):
+            log.warn(
+                "WARNING: 'depends.txt' will not be used by setuptools 0.6!\n"
+                "Use the install_requires/extras_require setup() args instead."
+            )
+
+        if self.exclude_source_files:
+            self.zap_pyfiles()
+
+        # Make the archive
+        make_zipfile(self.egg_output, archive_root, verbose=self.verbose,
+                          dry_run=self.dry_run, mode=self.gen_header())
+        if not self.keep_temp:
+            remove_tree(self.bdist_dir, dry_run=self.dry_run)
+
+        # Add to 'Distribution.dist_files' so that the "upload" command works
+        getattr(self.distribution,'dist_files',[]).append(
+            ('bdist_egg',get_python_version(),self.egg_output))
+
+
+
+
+    def zap_pyfiles(self):
+        log.info("Removing .py files from temporary directory")
+        for base,dirs,files in walk_egg(self.bdist_dir):
+            for name in files:
+                if name.endswith('.py'):
+                    path = os.path.join(base,name)
+                    log.debug("Deleting %s", path)
+                    os.unlink(path)
+
+    def zip_safe(self):
+        safe = getattr(self.distribution,'zip_safe',None)
+        if safe is not None:
+            return safe
+        log.warn("zip_safe flag not set; analyzing archive contents...")
+        return analyze_egg(self.bdist_dir, self.stubs)
+
+    def make_init_files(self):
+        """Create missing package __init__ files"""
+        init_files = []
+        for base,dirs,files in walk_egg(self.bdist_dir):
+            if base==self.bdist_dir:
+                # don't put an __init__ in the root
+                continue
+            for name in files:
+                if name.endswith('.py'):
+                    if '__init__.py' not in files:
+                        pkg = base[len(self.bdist_dir)+1:].replace(os.sep,'.')
+                        if self.distribution.has_contents_for(pkg):
+                            log.warn("Creating missing __init__.py for %s",pkg)
+                            filename = os.path.join(base,'__init__.py')
+                            if not self.dry_run:
+                                f = open(filename,'w'); f.write(NS_PKG_STUB)
+                                f.close()
+                            init_files.append(filename)
+                    break
+            else:
+                # not a package, don't traverse to subdirectories
+                dirs[:] = []
+
+        return init_files
+
+    def gen_header(self):
+        epm = EntryPoint.parse_map(self.distribution.entry_points or '')
+        ep = epm.get('setuptools.installation',{}).get('eggsecutable')
+        if ep is None:
+            return 'w'  # not an eggsecutable, do it the usual way.
+
+        if not ep.attrs or ep.extras:
+            raise DistutilsSetupError(
+                "eggsecutable entry point (%r) cannot have 'extras' "
+                "or refer to a module" % (ep,)
+            )
+
+        pyver = sys.version[:3]
+        pkg = ep.module_name
+        full = '.'.join(ep.attrs)
+        base = ep.attrs[0]
+        basename = os.path.basename(self.egg_output)
+
+        header = (
+            "#!/bin/sh\n"
+            'if [ `basename $0` = "%(basename)s" ]\n'
+            'then exec python%(pyver)s -c "'
+            "import sys, os; sys.path.insert(0, os.path.abspath('$0')); "
+            "from %(pkg)s import %(base)s; sys.exit(%(full)s())"
+            '" "$@"\n'
+            'else\n'
+            '  echo $0 is not the correct name for this egg file.\n'
+            '  echo Please rename it back to %(basename)s and try again.\n'
+            '  exec false\n'
+            'fi\n'
+
+        ) % locals()
+
+        if not self.dry_run:
+            mkpath(os.path.dirname(self.egg_output), dry_run=self.dry_run)
+            f = open(self.egg_output, 'w')
+            f.write(header)
+            f.close()
+        return 'a'
+
+
+    def copy_metadata_to(self, target_dir):
+        prefix = os.path.join(self.egg_info,'')
+        for path in self.ei_cmd.filelist.files:
+            if path.startswith(prefix):
+                target = os.path.join(target_dir, path[len(prefix):])
+                ensure_directory(target)
+                self.copy_file(path, target)
+
+    def get_ext_outputs(self):
+        """Get a list of relative paths to C extensions in the output distro"""
+
+        all_outputs = []
+        ext_outputs = []
+
+        paths = {self.bdist_dir:''}
+        for base, dirs, files in os.walk(self.bdist_dir):
+            for filename in files:
+                if os.path.splitext(filename)[1].lower() in NATIVE_EXTENSIONS:
+                    all_outputs.append(paths[base]+filename)
+            for filename in dirs:
+                paths[os.path.join(base,filename)] = paths[base]+filename+'/'
+
+        if self.distribution.has_ext_modules():
+            build_cmd = self.get_finalized_command('build_ext')
+            for ext in build_cmd.extensions:
+                if isinstance(ext,Library):
+                    continue
+                fullname = build_cmd.get_ext_fullname(ext.name)
+                filename = build_cmd.get_ext_filename(fullname)
+                if not os.path.basename(filename).startswith('dl-'):
+                    if os.path.exists(os.path.join(self.bdist_dir,filename)):
+                        ext_outputs.append(filename)
+
+        return all_outputs, ext_outputs
+
+
+NATIVE_EXTENSIONS = dict.fromkeys('.dll .so .dylib .pyd'.split())
+
+
+
+
+def walk_egg(egg_dir):
+    """Walk an unpacked egg's contents, skipping the metadata directory"""
+    walker = os.walk(egg_dir)
+    base,dirs,files = walker.next()
+    if 'EGG-INFO' in dirs:
+        dirs.remove('EGG-INFO')
+    yield base,dirs,files
+    for bdf in walker:
+        yield bdf
+
+def analyze_egg(egg_dir, stubs):
+    # check for existing flag in EGG-INFO
+    for flag,fn in safety_flags.items():
+        if os.path.exists(os.path.join(egg_dir,'EGG-INFO',fn)):
+            return flag
+    if not can_scan(): return False
+    safe = True
+    for base, dirs, files in walk_egg(egg_dir):
+        for name in files:
+            if name.endswith('.py') or name.endswith('.pyw'):
+                continue
+            elif name.endswith('.pyc') or name.endswith('.pyo'):
+                # always scan, even if we already know we're not safe
+                safe = scan_module(egg_dir, base, name, stubs) and safe
+    return safe
+
+def write_safety_flag(egg_dir, safe):
+    # Write or remove zip safety flag file(s)
+    for flag,fn in safety_flags.items():
+        fn = os.path.join(egg_dir, fn)
+        if os.path.exists(fn):
+            if safe is None or bool(safe)<>flag:
+                os.unlink(fn)
+        elif safe is not None and bool(safe)==flag:
+            f=open(fn,'wb'); f.write('\n'); f.close()
+
+safety_flags = {
+    True: 'zip-safe',
+    False: 'not-zip-safe',
+}
+
+def scan_module(egg_dir, base, name, stubs):
+    """Check whether module possibly uses unsafe-for-zipfile stuff"""
+
+    filename = os.path.join(base,name)
+    if filename[:-1] in stubs:
+        return True     # Extension module
+    pkg = base[len(egg_dir)+1:].replace(os.sep,'.')
+    module = pkg+(pkg and '.' or '')+os.path.splitext(name)[0]
+    f = open(filename,'rb'); f.read(8)   # skip magic & date
+    code = marshal.load(f);  f.close()
+    safe = True
+    symbols = dict.fromkeys(iter_symbols(code))
+    for bad in ['__file__', '__path__']:
+        if bad in symbols:
+            log.warn("%s: module references %s", module, bad)
+            safe = False
+    if 'inspect' in symbols:
+        for bad in [
+            'getsource', 'getabsfile', 'getsourcefile', 'getfile'
+            'getsourcelines', 'findsource', 'getcomments', 'getframeinfo',
+            'getinnerframes', 'getouterframes', 'stack', 'trace'
+        ]:
+            if bad in symbols:
+                log.warn("%s: module MAY be using inspect.%s", module, bad)
+                safe = False
+    if '__name__' in symbols and '__main__' in symbols and '.' not in module:
+        if sys.version[:3]=="2.4":  # -m works w/zipfiles in 2.5
+            log.warn("%s: top-level module may be 'python -m' script", module)
+            safe = False
+    return safe
+
+def iter_symbols(code):
+    """Yield names and strings used by `code` and its nested code objects"""
+    for name in code.co_names: yield name
+    for const in code.co_consts:
+        if isinstance(const,basestring):
+            yield const
+        elif isinstance(const,CodeType):
+            for name in iter_symbols(const):
+                yield name
+
+def can_scan():
+    if not sys.platform.startswith('java') and sys.platform != 'cli':
+        # CPython, PyPy, etc.
+        return True
+    log.warn("Unable to analyze compiled code on this platform.")
+    log.warn("Please ask the author to include a 'zip_safe'"
+             " setting (either True or False) in the package's setup.py")
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Attribute names of options for commands that might need to be convinced to
+# install to the egg build directory
+
+INSTALL_DIRECTORY_ATTRS = [
+    'install_lib', 'install_dir', 'install_data', 'install_base'
+]
+
+def make_zipfile(zip_filename, base_dir, verbose=0, dry_run=0, compress=None,
+    mode='w'
+):
+    """Create a zip file from all the files under 'base_dir'.  The output
+    zip file will be named 'base_dir' + ".zip".  Uses either the "zipfile"
+    Python module (if available) or the InfoZIP "zip" utility (if installed
+    and found on the default search path).  If neither tool is available,
+    raises DistutilsExecError.  Returns the name of the output zip file.
+    """
+    import zipfile
+    mkpath(os.path.dirname(zip_filename), dry_run=dry_run)
+    log.info("creating '%s' and adding '%s' to it", zip_filename, base_dir)
+
+    def visit(z, dirname, names):
+        for name in names:
+            path = os.path.normpath(os.path.join(dirname, name))
+            if os.path.isfile(path):
+                p = path[len(base_dir)+1:]
+                if not dry_run:
+                    z.write(path, p)
+                log.debug("adding '%s'" % p)
+
+    if compress is None:
+        compress = (sys.version>="2.4") # avoid 2.3 zipimport bug when 64 bits
+
+    compression = [zipfile.ZIP_STORED, zipfile.ZIP_DEFLATED][bool(compress)]
+    if not dry_run:
+        z = zipfile.ZipFile(zip_filename, mode, compression=compression)
+        os.path.walk(base_dir, visit, z)
+        z.close()
+    else:
+        os.path.walk(base_dir, visit, None)
+    return zip_filename
+#
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/bdist_egg.pyc
binary ./setuptools-0.6c14devdev.egg/setuptools/command/bdist_egg.pyc
oldhex
*
newhex
*d1f20d0a381ef84b6300000000000000001100000040000000738a0100006400005a0000640100
*6402006b01005a01006401006402006b02005a02006401006402006b03005a0300640100640300
*6b04006c05005a0500016401006404006b06006c07005a07006c08005a0800016401006405006b
*09006c0a005a0a006c0b005a0b00016401006406006b0c006c0d005a0d00016401006407006b0e
*006c0f005a0f00016401006408006b10006c11005a11006c12005a12006c13005a130001640100
*6409006b10006c14005a140001640100640a006b15006c16005a160001640100640b006b17006c
*18005a180001640c008400005a1900640d008400005a1a00640e005a1b00640f00650500660100
*641000840000830000595a1c00651d00691e00641100691f008300008301005a20006412008400
*005a21006413008400005a22006414008400005a23006802006415006524003664160065250036
*5a26006417008400005a27006418008400005a28006419008400005a2900641a00641b00641c00
*641d006704005a2a00641e00641e00652b00641f006420008404005a2c00640200532821000000
*73360000007365747570746f6f6c732e636f6d6d616e642e62646973745f6567670a0a4275696c
*64202e65676720646973747269627574696f6e7369ffffffff4e28010000007407000000436f6d
*6d616e642802000000740b00000072656d6f76655f7472656574060000006d6b70617468280200
*000074120000006765745f707974686f6e5f76657273696f6e740e0000006765745f707974686f
*6e5f6c6962280100000074030000006c6f6728010000007413000000446973747574696c735365
*7475704572726f72280300000074120000006765745f6275696c645f706c6174666f726d740c00
*0000446973747269627574696f6e7410000000656e737572655f6469726563746f727928010000
*00740a000000456e747279506f696e7428010000007408000000436f6465547970652801000000
*74070000004c696272617279630100000001000000020000004300000073490000006401007c00
*006a06006f1a00017400006901006902007c0000830100640200197d00006e0100017c00006903
*006403008301006f0e00017c0000640400207d00006e0100017c00005328050000004e74010000
*002e690000000074060000006d6f64756c6569faffffff280400000074020000006f7374040000
*0070617468740800000073706c69746578747408000000656e6473776974682801000000740800
*000066696c656e616d65280000000028000000007349000000433a5c7461686f652d6c6166735c
*7365747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c
*636f6d6d616e645c62646973745f6567672e7079740c00000073747269705f6d6f64756c651100
*0000730a00000000010d011a0110010e016302000000030000000a00000043000000734f000000
*7400007c01006401008302007d02007c0200690100640200690200640300640400640500640600
*7c000016640700640800640900640a00670800830100830100017c020069030083000001640000
*53280b0000004e74010000007773010000000a7314000000646566205f5f626f6f747374726170
*5f5f28293a732d000000202020676c6f62616c205f5f626f6f7473747261705f5f2c205f5f6c6f
*616465725f5f2c205f5f66696c655f5f7321000000202020696d706f7274207379732c20706b67
*5f7265736f75726365732c20696d70733a0000002020205f5f66696c655f5f203d20706b675f72
*65736f75726365732e7265736f757263655f66696c656e616d65285f5f6e616d655f5f2c257229
*73330000002020205f5f6c6f616465725f5f203d204e6f6e653b2064656c205f5f626f6f747374
*7261705f5f2c205f5f6c6f616465725f5f7326000000202020696d702e6c6f61645f64796e616d
*6963285f5f6e616d655f5f2c5f5f66696c655f5f29730f0000005f5f626f6f7473747261705f5f
*28297400000000280400000074040000006f70656e7405000000777269746574040000006a6f69
*6e7405000000636c6f7365280300000074080000007265736f757263657406000000707966696c
*65740100000066280000000028000000007349000000433a5c7461686f652d6c6166735c736574
*7570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d
*6d616e645c62646973745f6567672e7079740a00000077726974655f7374756218000000731800
*000000010f010c01030103010301030104010301030103010d0273370000005f5f696d706f7274
*5f5f2822706b675f7265736f757263657322292e6465636c6172655f6e616d657370616365285f
*5f6e616d655f5f29740900000062646973745f6567676300000000000000000800000042000000
*73be0000006500005a01006400005a0200641e0064040064050064060065030083000016660300
*642000640900640a00640b00640c00176603006421006422006706005a05006409006410006407
*006703005a06006412008400005a07006413008400005a08006414008400005a09006415008400
*005a0a006416008400005a0b006417008400005a0c006418008400005a0d006419008400005a0e
*00641a008400005a0f00641b008400005a1000641c008400005a1100641d008400005a12005253
*2823000000731c00000063726561746520616e20226567672220646973747269627574696f6e73
*0a00000062646973742d6469723d740100000062733100000074656d706f726172792064697265
*63746f727920666f72206372656174696e672074686520646973747269627574696f6e730a0000
*00706c61742d6e616d653d740100000070733b000000706c6174666f726d206e616d6520746f20
*656d62656420696e2067656e6572617465642066696c656e616d6573202864656661756c743a20
*25732973140000006578636c7564652d736f757263652d66696c6573732b00000072656d6f7665
*20616c6c202e70792066696c65732066726f6d207468652067656e657261746564206567677309
*0000006b6565702d74656d7074010000006b732f0000006b656570207468652070736575646f2d
*696e7374616c6c6174696f6e20747265652061726f756e64206166746572207321000000637265
*6174696e672074686520646973747269627574696f6e2061726368697665730900000064697374
*2d6469723d740100000064732d0000006469726563746f727920746f207075742066696e616c20
*6275696c7420646973747269627574696f6e7320696e730a000000736b69702d6275696c647332
*000000736b69702072656275696c64696e672065766572797468696e672028666f722074657374
*696e672f646562756767696e672963010000000100000002000000430000007343000000640000
*7c00005f01006400007c00005f02006401007c00005f03006400007c00005f04006401007c0000
*5f05006400007c00005f06006400007c00005f07006400005328020000004e6900000000280800
*000074040000004e6f6e65740900000062646973745f6469727409000000706c61745f6e616d65
*74090000006b6565705f74656d707408000000646973745f646972740a000000736b69705f6275
*696c64740a0000006567675f6f757470757474140000006578636c7564655f736f757263655f66
*696c65732801000000740400000073656c66280000000028000000007349000000433a5c746168
*6f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c736574
*7570746f6f6c735c636f6d6d616e645c62646973745f6567672e70797412000000696e69746961
*6c697a655f6f7074696f6e7353000000730e000000000109010901090109010901090163010000
*0004000000070000004300000073040100007c0000690000640100830100047d01007c00005f01
*007c01006902007c00005f02007c00006903006400006a08006f2e00017c000069000064020083
*01006905007d02007406006907006908007c02006403008302007c00005f03006e0100017c0000
*6909006400006a08006f100001740a008300007c00005f09006e0100017c0000690b0064020064
*0600830200017c0000690c006400006a08006f600001740d006400006400007c0100690e007c01
*00690f007410008300007c00006911006912008300006f0700017c0000690900830600690e0083
*00007d03007406006907006908007c00006913007c0300640500178302007c00005f0c006e0100
*016400005328070000004e74080000006567675f696e666f740500000062646973747403000000
*656767522800000073040000002e65676728020000007308000000646973745f64697273080000
*00646973745f646972281400000074150000006765745f66696e616c697a65645f636f6d6d616e
*64740600000065695f636d64522e00000052250000005224000000740a00000062646973745f62
*617365520f000000521000000052190000005226000000520700000074150000007365745f756e
*646566696e65645f6f7074696f6e73522a000000520800000074080000006567675f6e616d6574
*0b0000006567675f76657273696f6e5203000000740c000000646973747269627574696f6e740f
*0000006861735f6578745f6d6f64756c657352280000002804000000522c000000523200000052
*330000007408000000626173656e616d65280000000028000000007349000000433a5c7461686f
*652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c73657475
*70746f6f6c735c636f6d6d616e645c62646973745f6567672e7079741000000066696e616c697a
*655f6f7074696f6e735d000000731c000000000116010c02100112011c02100110021002100303
*011201060122036301000000060000000b0000004300000073680100007c00006900007c000069
*01006401008301005f020074030069040069050074030069040069060074070083000083010083
*01007d01007c0000690800690900670000027d02007c00006908005f090078d1007c0200445dc9
*007d0300740a007c0300740b008302006fa00001740c007c03008301006402006a02006f8d0001
*740300690400690d007c0300640300198301006f7200017403006904006906007c030064030019
*8301007d04007403006904006905007c04008301007d05007c05007c01006a0200701700017c05
*00690e007c0100740300690f00178301006f2200017c0400740c007c0100830100640400171f7c
*0300640400196602007d030071080101710c01016e0100017c00006908006909006910007c0300
*83010001715600577a31007411006912006405007c000069000016830100017c00006913006406
*0064070064030064080064000083010201576400007c02007c00006908005f0900586400005328
*090000004e7407000000696e7374616c6c690200000069000000006901000000731d000000696e
*7374616c6c696e67207061636b616765206461746120746f202573740c000000696e7374616c6c
*5f646174617405000000666f7263657404000000726f6f74281500000052250000005231000000
*740b000000696e7374616c6c5f6c6962520f000000521000000074080000006e6f726d63617365
*74080000007265616c7061746852040000005237000000740a000000646174615f66696c657374
*0a0000006973696e7374616e636574050000007475706c6574030000006c656e74050000006973
*616273740a0000007374617274737769746874030000007365707406000000617070656e645205
*0000007404000000696e666f740c00000063616c6c5f636f6d6d616e6452240000002806000000
*522c000000740d000000736974655f7061636b6167657374030000006f6c647404000000697465
*6d5241000000740a0000006e6f726d616c697a6564280000000028000000007349000000433a5c
*7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c
*7365747570746f6f6c735c636f6d6d616e645c62646973745f6567672e7079740f000000646f5f
*696e7374616c6c5f646174617c0000007322000000000215022101190207000601230117011601
*1201130111022a021702030114011d026301000000010000000100000043000000730a0000007c
*00006900006701005328010000004e2801000000522a0000002801000000522c00000028000000
*0028000000007349000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36
*6331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c62646973745f
*6567672e7079740b0000006765745f6f7574707574739600000073020000000001630200000005
*000000050000004b000000736d000000782100740000445d19007d03007c02006901007c03007c
*000069020083020001710700577c02006901006401007c0000690300830200017c020069010064
*02007c0000690400830200017c00006905007c01007c02008d01007d04007c00006906007c0100
*830100017c04005328030000007338000000496e766f6b65207265696e697469616c697a656420
*636f6d6d616e642060636d646e616d65602077697468206b6579776f7264206172677352290000
*0074070000006472795f72756e28070000007417000000494e5354414c4c5f4449524543544f52
*595f4154545253740a00000073657464656661756c745225000000522900000052520000007414
*0000007265696e697469616c697a655f636f6d6d616e64740b00000072756e5f636f6d6d616e64
*2805000000522c0000007407000000636d646e616d6574020000006b7774070000006469726e61
*6d657403000000636d64280000000028000000007349000000433a5c7461686f652d6c6166735c
*7365747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c
*636f6d6d616e645c62646973745f6567672e7079524b0000009a00000073100000000002070006
*0117011301130112010d016301000000110000000b0000004300000073cd0300007c0000690000
*640100830100017401006902006402007c000069030016830100017c0000690400640300830100
*7d01007c01006905007d02006400007c01005f05007c0000690700640400640500640600830101
*7d03007c02007c01005f05007c00006908008300005c02007d04007d05006700007c00005f0900
*6700007d060078c200740a007c0500830100445db4005c02007d07007d0800740b00690c00690d
*007c08008301005c02007d09007d0a00740b00690c00690e007c0000690300740f007c09008301
*00640700178302007d0b007c00006909006910007c0b00830100017401006902006408007c0800
*16830100017c0000691100701d0001741200740b00690c006913007c08008301007c0b00830200
*016e0100017c06006910007c0b00830100017c0800691400740b006915006409008302007c0500
*7c07003c718e00577c06006916007c0000691700830000830100017c06006f1100017c03006918
*007c0600830100016e0100017c0000691900691a006f0e00017c0000691b00830000016e010001
*7c00006903007d0c00740b00690c00690e007c0c00640a008302007d0d007c0000691c007c0d00
*830100017c0000691900691d006f430001740b00690c00690e007c0d00640b008302007d0e0074
*0100690200640c007c0e0016830100017c0000690700640d00640e007c0e00640f006410008301
*02016e0100017c0000691e007c0d0083010001740b00690c00690e007c0d006411008302007d0f
*007c04006f6900017401006902006412007c0f0016830100017c0000691100704a0001741f007c
*0f00830100017420007c0f006413008302007d10007c1000692100641400690e007c0400830100
*830100017c1000692100641400830100017c10006922008300000171dc02016e440001740b0069
*0c006923007c0f008301006f3000017401006902006415007c0f0016830100017c000069110070
*110001740b006924007c0f008301000171dc02016e010001742500740b00690c00690e007c0c00
*640a008302007c000069260083000083020001740b00690c00692700740b00690c00690e007c00
*006928006416008302008301006f110001740100692900641700830100016e0100017c0000692a
*006f0e00017c0000692b00830000016e010001742c007c0000692d007c0c006418007c0000692e
*006419007c0000691100641a007c0000692f00830000830203017c0000693000701a0001743100
*7c00006903006419007c0000691100830101016e0100017432007c0000691900641b0067000083
*0300691000641c007433008300007c0000692d006603008301000164000053281d0000004e522e
*000000731d000000696e7374616c6c696e67206c69627261727920636f646520746f202573523b
*000000523f00000074080000007761726e5f646972690000000073030000002e7079731b000000
*6372656174696e672073747562206c6f6164657220666f7220257374010000002f730800000045
*47472d494e464f7407000000736372697074737318000000696e7374616c6c696e672073637269
*70747320746f202573740f000000696e7374616c6c5f73637269707473740b000000696e737461
*6c6c5f64697274050000006e6f5f65706901000000730f0000006e61746976655f6c6962732e74
*7874730a00000077726974696e672025737402000000777473010000000a730b00000072656d6f
*76696e67202573730b000000646570656e64732e74787473780000005741524e494e473a202764
*6570656e64732e747874272077696c6c206e6f742062652075736564206279207365747570746f
*6f6c7320302e36210a5573652074686520696e7374616c6c5f72657175697265732f6578747261
*735f726571756972652073657475702829206172677320696e73746561642e7407000000766572
*626f7365525200000074040000006d6f6465740a000000646973745f66696c6573521f00000028
*3400000052560000005205000000524a00000052250000005231000000523e0000005224000000
*524b000000740f0000006765745f6578745f6f7574707574737405000000737475627374090000
*00656e756d6572617465520f000000521000000052110000005219000000521400000052490000
*005252000000521e000000523900000074070000007265706c6163655248000000740600000065
*7874656e64740f0000006d616b655f696e69745f66696c6573740c000000627974655f636f6d70
*696c655237000000524200000052500000005202000000525d0000007410000000636f70795f6d
*657461646174615f746f520900000052170000005218000000521a000000740600000069736669
*6c657406000000756e6c696e6b741100000077726974655f7361666574795f666c616774080000
*007a69705f736166657406000000657869737473522e00000074040000007761726e522b000000
*740b0000007a61705f707966696c6573740c0000006d616b655f7a697066696c65522a00000052
*62000000740a00000067656e5f6865616465725227000000520100000074070000006765746174
*747252030000002811000000522c0000007407000000696e7374636d6474080000006f6c645f72
*6f6f74525a000000740b000000616c6c5f6f757470757473740b0000006578745f6f7574707574
*73740a000000746f5f636f6d70696c65522100000074080000006578745f6e616d655213000000
*7403000000657874521c000000740c000000617263686976655f726f6f74522e000000740a0000
*007363726970745f646972740b0000006e61746976655f6c69627374090000006c6962735f6669
*6c65280000000028000000007349000000433a5c7461686f652d6c6166735c7365747570746f6f
*6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c
*62646973745f6567672e7079740300000072756ea5000000737600000000020d0414010f010900
*0901150109021201090106010d000c0118012201100111010a011d010d011d021301070111020d
*010e03090115010d010d01150111011d020d011501070111010a010a010f0116010d0112011301
*11010a01150203011f03250106010b040a010e03180116010a011a031501630100000006000000
*0500000043000000738b000000740000690100640100830100017877007402007c000069030083
*0100445d66005c03007d01007d02007d03007854007c0300445d4c007d04007c04006904006402
*008301006f3600017405006906006907007c01007c04008302007d05007400006908006403007c
*0500830200017405006909007c0500830100017133000171330057711d00576400005328040000
*004e732b00000052656d6f76696e67202e70792066696c65732066726f6d2074656d706f726172
*79206469726563746f727973030000002e7079730b00000044656c6574696e67202573280a0000
*005205000000524a000000740800000077616c6b5f65676752250000005212000000520f000000
*5210000000521900000074050000006465627567526e0000002806000000522c00000074040000
*0062617365740400000064697273740500000066696c657374040000006e616d65521000000028
*0000000028000000007349000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d
*302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c626469
*73745f6567672e70795273000000f7000000731200000000010d0110000f010700060110011501
*1001630100000002000000040000004300000073470000007400007c0000690100640100640000
*8303007d01007c01006400006a09006f0500017c01005301740300690400640200830100017405
*007c00006906007c00006907008302005328030000004e527000000073340000007a69705f7361
*666520666c6167206e6f74207365743b20616e616c797a696e67206172636869766520636f6e74
*656e74732e2e2e280800000052760000005237000000522400000052050000005272000000740b
*000000616e616c797a655f656767522500000052660000002802000000522c0000007404000000
*73616665280000000028000000007349000000433a5c7461686f652d6c6166735c736574757074
*6f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e
*645c62646973745f6567672e7079527000000000010000730a000000000115010d0105010d0163
*0100000009000000060000004300000073250100006700007d01007818017400007c0000690100
*830100445d07015c03007d02007d03007d04007c02007c00006901006a02006f0700017116006e
*01000178de007c0400445dcf007d05007c05006902006401008301006fb900016402007c04006a
*07006fa700017c02007403007c0000690100830100640300171f69040074050069060064040083
*02007d06007c00006907006908007c06008301006f6a0001740900690a006405007c0600830200
*01740500690b00690c007c02006402008302007d07007c0000690d00702a0001740e007c070064
*06008302007d08007c0800690f00741000830100017c0800691100830000016e0100017c010069
*12007c070083010001710d01016e0100015071430001714300576700007c030028711600577c01
*005328070000007325000000437265617465206d697373696e67207061636b616765205f5f696e
*69745f5f2066696c657373030000002e7079730b0000005f5f696e69745f5f2e70796901000000
*520d00000073230000004372656174696e67206d697373696e67205f5f696e69745f5f2e707920
*666f72202573521500000028130000005283000000522500000052120000005245000000526800
*0000520f0000005248000000523700000074100000006861735f636f6e74656e74735f666f7252
*05000000527200000052100000005219000000525200000052170000005218000000740b000000
*4e535f504b475f53545542521a00000052490000002809000000522c000000740a000000696e69
*745f66696c657352850000005286000000528700000052880000007403000000706b6752130000
*00521d000000280000000028000000007349000000433a5c7461686f652d6c6166735c73657475
*70746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d
*616e645c62646973745f6567672e7079526a00000007010000732a0000000002060110000f0110
*0207010700060110010d0126011301100115010a010f000d010e01150109030b0263010000000a
*000000050000004300000073290100007400006901007c00006902006903007004000164010083
*01007d01007c01006904006402006800008302006904006403008301007d02007c02006400006a
*08006f05000164040053017c02006906000c700a00017c02006907006f1700017408006405007c
*0200660100168301008201006e010001740900690a00640600207d03007c0200690b007d040064
*0700690c007c02006906008301007d05007c0200690600640800197d0600740d00690e00690f00
*7c00006910008301007d0700640900741100830000167d08007c0000691200704f000174130074
*0d00690e006914007c0000691000830100640a007c0000691200830101017415007c0000691000
*6404008302007d09007c09006916007c0800830100017c0900691700830000016e010001640b00
*53280c0000004e521600000073170000007365747570746f6f6c732e696e7374616c6c6174696f
*6e740c000000656767736563757461626c6552150000007347000000656767736563757461626c
*6520656e74727920706f696e7420282572292063616e6e6f742068617665202765787472617327
*206f7220726566657220746f2061206d6f64756c656903000000520d0000006900000000734801
*000023212f62696e2f73680a6966205b2060626173656e616d6520243060203d20222528626173
*656e616d65297322205d0a7468656e206578656320707974686f6e252870797665722973202d63
*2022696d706f7274207379732c206f733b207379732e706174682e696e7365727428302c206f73
*2e706174682e61627370617468282724302729293b2066726f6d202528706b67297320696d706f
*72742025286261736529733b207379732e6578697428252866756c6c2973282929222022244022
*0a656c73650a20206563686f202430206973206e6f742074686520636f7272656374206e616d65
*20666f722074686973206567672066696c652e0a20206563686f20506c656173652072656e616d
*65206974206261636b20746f202528626173656e616d65297320616e642074727920616761696e
*2e0a2020657865632066616c73650a66690a52520000007401000000612818000000520a000000
*740900000070617273655f6d61705237000000740c000000656e7472795f706f696e7473740300
*000067657452240000007405000000617474727374060000006578747261735206000000740300
*0000737973740700000076657273696f6e740b0000006d6f64756c655f6e616d65521900000052
*0f00000052100000005239000000522a00000074060000006c6f63616c73525200000052020000
*00525900000052170000005218000000521a000000280a000000522c000000740300000065706d
*7402000000657074050000007079766572528e000000740400000066756c6c5285000000523900
*00007406000000686561646572521d000000280000000028000000007349000000433a5c746168
*6f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c736574
*7570746f6f6c735c636f6d6d616e645c62646973745f6567672e7079527500000020010000732a
*00000000011c011b010d01050215010301030111030d01090112010d011503030c0a020a012201
*12010d010e01630200000005000000060000004300000073830000007400006901006902007c00
*006903006401008302007d02007864007c0000690400690500690600445d53007d03007c030069
*07007c02008301006f3d00017400006901006902007c01007c03007408007c02008301001f8302
*007d04007409007c0400830100017c0000690a007c03007c040083020001712800017128005764
*00005328020000004e5216000000280b000000520f00000052100000005219000000522e000000
*5232000000740800000066696c656c697374528700000052470000005245000000520900000074
*09000000636f70795f66696c652805000000522c000000740a0000007461726765745f64697274
*060000007072656669785210000000740600000074617267657428000000002800000000734900
*0000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36633134646576646576
*2e6567675c7365747570746f6f6c735c636f6d6d616e645c62646973745f6567672e7079526c00
*000049010000730e000000000118011000060110011f010a0163010000000b0000000900000043
*00000073940100006700007d01006700007d02006801006401007c0000690000367d030078a600
*7401006902007c0000690000830100445d92005c03007d04007d05007d0600784a007c0600445d
*42007d07007401006903006904007c0700830100640200196905008300007406006a06006f1900
*017c01006907007c03007c0400197c0700178301000171450001714500577833007c0500445d2b
*007d07007c03007c0400197c070017640300177c03007401006903006908007c04007c07008302
*003c71920057712f00577c0000690900690a008300006fb500017c0000690b006404008301007d
*080078a3007c0800690c00445d94007d0900740d007c0900740e008302006f07000171ee006e01
*00017c0800690f007c09006910008301007d0a007c08006911007c0a008301007d070074010069
*03006912007c0700830100691300640500830100703a0001740100690300691400740100690300
*6908007c00006900007c07008302008301006f1100017c02006907007c07008301000171820101
*71ee000171ee00576e0100017c01007c020066020053280600000073410000004765742061206c
*697374206f662072656c617469766520706174687320746f204320657874656e73696f6e732069
*6e20746865206f75747075742064697374726f52160000006901000000525c0000007409000000
*6275696c645f6578747303000000646c2d28150000005225000000520f00000074040000007761
*6c6b5210000000521100000074050000006c6f77657274110000004e41544956455f455854454e
*53494f4e5352490000005219000000523700000052380000005231000000740a00000065787465
*6e73696f6e735243000000520c00000074100000006765745f6578745f66756c6c6e616d655288
*00000074100000006765745f6578745f66696c656e616d65523900000052470000005271000000
*280b000000522c0000005279000000527a00000074050000007061746873528500000052860000
*005287000000521300000074090000006275696c645f636d64527d000000740800000066756c6c
*6e616d65280000000028000000007349000000433a5c7461686f652d6c6166735c736574757074
*6f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e
*645c62646973745f6567672e70795265000000510100007330000000000306010602100113000f
*010700060123011d01070006012d0210010f010a0006011001070112010f011c0125011d022803
*000000730a00000062646973742d6469723d5220000000733100000074656d706f726172792064
*69726563746f727920666f72206372656174696e672074686520646973747269627574696f6e4e
*280300000073140000006578636c7564652d736f757263652d66696c65734e732b00000072656d
*6f766520616c6c202e70792066696c65732066726f6d207468652067656e657261746564206567
*6728030000007309000000646973742d6469723d5223000000732d0000006469726563746f7279
*20746f207075742066696e616c206275696c7420646973747269627574696f6e7320696e280300
*0000730a000000736b69702d6275696c644e7332000000736b69702072656275696c64696e6720
*65766572797468696e672028666f722074657374696e672f646562756767696e67292813000000
*74080000005f5f6e616d655f5f740a0000005f5f6d6f64756c655f5f740b000000646573637269
*7074696f6e52070000005224000000740c000000757365725f6f7074696f6e73740f000000626f
*6f6c65616e5f6f7074696f6e73522d000000523a00000052500000005251000000524b00000052
*8200000052730000005270000000526a0000005275000000526c00000052650000002800000000
*280000000028000000007349000000433a5c7461686f652d6c6166735c7365747570746f6f6c73
*2d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c6264
*6973745f6567672e7079521f0000002a00000073380000000602060300010301060103010a0100
*01030106010301070100010301000109040f13090a091f091a0904090b09520909090709190929
*090873140000002e646c6c202e736f202e64796c6962202e707964630100000006000000030000
*0063000000736a0000007400006901007c00008301007d01007c01006902008300005c03007d02
*007d03007d04006401007c03006a06006f1100017c0300690300640100830100016e0100017c02
*007c03007c040066030056017813007c0100445d0b007d05007c05005601715700576402005328
*03000000734000000057616c6b20616e20756e7061636b656420656767277320636f6e74656e74
*732c20736b697070696e6720746865206d65746164617461206469726563746f72797308000000
*4547472d494e464f4e2804000000520f00000052a500000074040000006e657874740600000072
*656d6f7665280600000074070000006567675f646972740600000077616c6b6572528500000052
*8600000052870000007403000000626466280000000028000000007349000000433a5c7461686f
*652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c73657475
*70746f6f6c735c636f6d6d616e645c62646973745f6567672e7079528300000072010000731000
*000000020f0115010d0111010e0107000601630200000009000000090000004300000073f80000
*00784400740000690100830000445d36005c02007d02007d030074020069030069040074020069
*03006905007c00006401007c03008303008301006f0500017c02005301710d0057740600830000
*7005000174070053017408007d04007895007409007c0000830100445d87005c03007d05007d06
*007d07007875007c0700445d6d007d08007c0800690a00640200830100701000017c0800690a00
*6403008301006f070001717f00717f00017c0800690a00640400830100701000017c0800690a00
*6405008301006f200001740b007c00007c05007c08007c01008304006f0400017c04007d040071
*7f0001717f0057716900577c04005328060000004e73080000004547472d494e464f7303000000
*2e707973040000002e70797773040000002e70796373040000002e70796f280c000000740c0000
*007361666574795f666c61677374050000006974656d73520f0000005210000000527100000052
*19000000740800000063616e5f7363616e740500000046616c7365740400000054727565528300
*00005212000000740b0000007363616e5f6d6f64756c65280900000052b5000000526600000074
*04000000666c61677402000000666e528a00000052850000005286000000528700000052880000
*00280000000028000000007349000000433a5c7461686f652d6c6166735c7365747570746f6f6c
*732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c62
*646973745f6567672e707952890000007c010000732000000000020d000c01250109010a000501
*06010d000f01070006012001070120022801630200000005000000040000004300000073c80000
*0078c100740000690100830000445db3005c02007d02007d03007402006903006904007c00007c
*03008302007d03007402006903006905007c03008301006f3500017c01006400006a0800701300
*017407007c01008301007c02006a03006f1100017402006908007c03008301000171c00001710d
*00017c01006400006a09006f3d00017407007c01008301007c02006a02006f2a00017409007c03
*006401008302007d04007c0400690a00640200830100017c0400690b0083000001710d0001710d
*00576400005328030000004e7402000000776273010000000a280c00000052b800000052b90000
*00520f00000052100000005219000000527100000052240000007404000000626f6f6c526e0000
*0052170000005218000000521a000000280500000052b5000000528a00000052be00000052bf00
*0000521d000000280000000028000000007349000000433a5c7461686f652d6c6166735c736574
*7570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d
*6d616e645c62646973745f6567672e7079526f0000008c010000731400000000020d000c011501
*13012001150120010f000d0073080000007a69702d73616665730c0000006e6f742d7a69702d73
*61666563040000000c0000000f0000004300000073d50100007400006901006902007c01007c02
*008302007d04007c0400640100207c03006a06006f05000174030053017c01007404007c000083
*0100640200171f6905007400006906006403008302007d05007c05007c05006f07000164030070
*040001640400177400006901006907007c020083010064050019177d06007408007c0400640600
*8302007d07007c070069090064070083010001740a00690b007c07008301007d08007c0700690c
*00830000017403007d0900740d00690e00740f007c08008301008301007d0a00783e0064080064
*0900670200445d30007d0b007c0b007c0a006a06006f1d0001741000691100640a007c06007c0b
*00830300017412007d090071d7000171d70057640b007c0a006a06006f600001785d00640c0064
*0d00640e00640f00641000641100641200641300641400641500641600670b00445d30007d0b00
*7c0b007c0a006a06006f1d00017410006911006417007c06007c0b00830300017412007d090071
*400101714001576e0100016418007c0a006a06006f4c00016419007c0a006a06006f3f00016403
*007c06006a07006f320001741300691400641a0020641b006a02006f1a0001741000691100641c
*007c0600830200017412007d090071d101016e0100017c090053281d000000733b000000436865
*636b2077686574686572206d6f64756c6520706f737369626c79207573657320756e736166652d
*666f722d7a697066696c6520737475666669ffffffff6901000000520d00000052160000006900
*00000074020000007262690800000074080000005f5f66696c655f5f74080000005f5f70617468
*5f5f731800000025733a206d6f64756c65207265666572656e6365732025737407000000696e73
*706563747409000000676574736f75726365740a00000067657461627366696c65740d00000067
*6574736f7572636566696c65741500000067657466696c65676574736f757263656c696e657374
*0a00000066696e64736f75726365740b000000676574636f6d6d656e7473740c00000067657466
*72616d65696e666f740e000000676574696e6e65726672616d6573740e0000006765746f757465
*726672616d65737405000000737461636b74050000007472616365732200000025733a206d6f64
*756c65204d4159206265207573696e6720696e73706563742e257352ae00000074080000005f5f
*6d61696e5f5f69030000007303000000322e34732e00000025733a20746f702d6c6576656c206d
*6f64756c65206d61792062652027707974686f6e202d6d27207363726970742815000000520f00
*00005210000000521900000052bc00000052450000005268000000524800000052110000005217
*00000074040000007265616474070000006d61727368616c74040000006c6f6164521a00000074
*0400000064696374740800000066726f6d6b657973740c000000697465725f73796d626f6c7352
*05000000527200000052bb00000052960000005297000000280c00000052b50000005285000000
*528800000052660000005213000000528e000000520e000000521d0000007404000000636f6465
*528a000000740700000073796d626f6c7374030000006261642800000000280000000073490000
*00433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e
*6567675c7365747570746f6f6c735c636f6d6d616e645c62646973745f6567672e707952bd0000
*009b010000733c000000000315011101050123012c010f000d010f000a01060115010d0006010d
*0113010e010d0103010c010901100006020d01130112012701140110010e016301000000030000
*000600000063000000737a0000007816007c0000690000445d0b007d01007c01005601710a0057
*785a007c0000690100445d4f007d02007402007c02007403008302006f0900017c020056017123
*00017402007c02007404008302006f200001781d007405007c0200830100445d0b007d01007c01
*005601715f0057712300017123005764010053280200000073420000005969656c64206e616d65
*7320616e6420737472696e677320757365642062792060636f64656020616e6420697473206e65
*7374656420636f6465206f626a656374734e28060000007408000000636f5f6e616d6573740900
*0000636f5f636f6e7374735243000000740a00000062617365737472696e67520b00000052d700
*0000280300000052d800000052880000007405000000636f6e7374280000000028000000007349
*000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465
*762e6567675c7365747570746f6f6c735c636f6d6d616e645c62646973745f6567672e707952d7
*000000ba010000731600000000020a00060009010a0006011001090110010d0006016300000000
*00000000020000004300000073470000007400006901006902006401008301000c6f1500017400
*006901006402006a03006f05000174030053017404006905006403008301000174040069050064
*0400830100016400005328050000004e74040000006a6176617403000000636c69733100000055
*6e61626c6520746f20616e616c797a6520636f6d70696c656420636f6465206f6e207468697320
*706c6174666f726d2e7366000000506c656173652061736b2074686520617574686f7220746f20
*696e636c756465206120277a69705f73616665272073657474696e672028656974686572205472
*7565206f722046616c73652920696e20746865207061636b61676527732073657475702e707928
*0600000052960000007408000000706c6174666f726d524700000052bc00000052050000005272
*0000002800000000280000000028000000007349000000433a5c7461686f652d6c6166735c7365
*747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f
*6d6d616e645c62646973745f6567672e707952ba000000c401000073080000000001240205010d
*01523f000000525f000000523c000000740c000000696e7374616c6c5f62617365690000000052
*1500000063060000000a000000070000000300000073e60000006401006402006b00007d060074
*01007402006903006904007c0000830100640300880000830101017405006906006404007c0000
*880100830300018700008701006602006405008600007d07007c04006402006a08006f13000174
*08006909006406006a05007d04006e0100017c0600690a007c0600690b00670200740c007c0400
*830100197d0800880000703c00017c0600690d007c00007c05006407007c08008302017d090074
*0200690300690e008801007c07007c0900830300017c0900690f00830000016e17000174020069
*0300690e008801007c0700640200830300017c0000532808000000737101000043726561746520
*61207a69702066696c652066726f6d20616c6c207468652066696c657320756e64657220276261
*73655f646972272e2020546865206f75747075740a202020207a69702066696c652077696c6c20
*6265206e616d65642027626173655f64697227202b20222e7a6970222e20205573657320656974
*6865722074686520227a697066696c65220a20202020507974686f6e206d6f64756c6520286966
*20617661696c61626c6529206f722074686520496e666f5a495020227a697022207574696c6974
*792028696620696e7374616c6c65640a20202020616e6420666f756e64206f6e20746865206465
*6661756c74207365617263682070617468292e20204966206e65697468657220746f6f6c206973
*20617661696c61626c652c0a2020202072616973657320446973747574696c7345786563457272
*6f722e202052657475726e7320746865206e616d65206f6620746865206f7574707574207a6970
*2066696c652e0a2020202069ffffffff4e525200000073230000006372656174696e6720272573
*2720616e6420616464696e67202725732720746f20697463030000000600000005000000130000
*00738d0000007886007c0200445d7e007d03007400006901006902007400006901006903007c01
*007c03008302008301007d04007400006901006904007c04008301006f4400017c040074050088
*0100830100640100171f7d0500880000701400017c00006906007c04007c0500830200016e0100
*017407006908006402007c0500168301000171070001710700576400005328030000004e690100
*0000730b000000616464696e6720272573272809000000520f000000521000000074080000006e
*6f726d706174685219000000526d00000052450000005218000000520500000052840000002806
*00000074010000007a525900000074050000006e616d6573528800000052100000005221000000
*280200000052520000007408000000626173655f64697228000000007349000000433a5c746168
*6f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c736574
*7570746f6f6c735c636f6d6d616e645c62646973745f6567672e70797405000000766973697401
*0200007310000000000107000601210113011401070114017303000000322e34740b000000636f
*6d7072657373696f6e281000000074070000007a697066696c655202000000520f000000521000
*000052590000005205000000524a000000522400000052960000005297000000740a0000005a49
*505f53544f524544740c0000005a49505f4445464c4154454452c100000074070000005a697046
*696c6552a5000000521a000000280a000000740c0000007a69705f66696c656e616d6552e60000
*00526200000052520000007408000000636f6d7072657373526300000052e900000052e7000000
*52e800000052e400000028000000002802000000525200000052e60000007349000000433a5c74
*61686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c73
*65747570746f6f6c735c636f6d6d616e645c62646973745f6567672e70795274000000f4010000
*731a00000000090c011c01130212090d0113021c010701180116010e021601282d000000740700
*00005f5f646f635f5f5296000000520f00000052d3000000740a0000007365747570746f6f6c73
*52000000007412000000646973747574696c732e6469725f7574696c5201000000520200000074
*13000000646973747574696c732e737973636f6e66696752030000005204000000740900000064
*6973747574696c7352050000007410000000646973747574696c732e6572726f72735206000000
*740d000000706b675f7265736f7572636573520700000052080000005209000000520a00000074
*050000007479706573520b00000074140000007365747570746f6f6c732e657874656e73696f6e
*520c0000005214000000521e000000528c000000521f00000052d500000052d600000074050000
*0073706c697452a700000052830000005289000000526f00000052bc00000052bb00000052b800
*000052bd00000052d700000052ba00000052530000005224000000527400000028000000002800
*00000028000000007349000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d30
*2e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c62646973
*745f6567672e707974080000003c6d6f64756c653e030000007338000000060324011001160116
*01100110011c0110011001100209070910060216ff00441505090a0910090a030107010a03091f
*090a092d12030901
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/bdist_rpm.py
hunk ./setuptools-0.6c14devdev.egg/setuptools/command/bdist_rpm.py 1
+# This is just a kludge so that bdist_rpm doesn't guess wrong about the
+# distribution name and version, if the egg_info command is going to alter
+# them, another kludge to allow you to build old-style non-egg RPMs, and
+# finally, a kludge to track .rpm files for uploading when run on Python <2.5.
+
+from distutils.command.bdist_rpm import bdist_rpm as _bdist_rpm
+import sys, os
+
+class bdist_rpm(_bdist_rpm):
+
+    def initialize_options(self):
+        _bdist_rpm.initialize_options(self)
+        self.no_egg = None
+
+    if sys.version<"2.5":
+        # Track for uploading any .rpm file(s) moved to self.dist_dir
+        def move_file(self, src, dst, level=1):
+            _bdist_rpm.move_file(self, src, dst, level)
+            if dst==self.dist_dir and src.endswith('.rpm'):
+                getattr(self.distribution,'dist_files',[]).append(
+                    ('bdist_rpm',
+                    src.endswith('.src.rpm') and 'any' or sys.version[:3],
+                     os.path.join(dst, os.path.basename(src)))
+                )
+
+    def run(self):
+        self.run_command('egg_info')    # ensure distro name is up-to-date
+        _bdist_rpm.run(self)
+
+
+
+
+
+
+
+
+
+
+
+
+
+    def _make_spec_file(self):
+        version = self.distribution.get_version()
+        rpmversion = version.replace('-','_')
+        spec = _bdist_rpm._make_spec_file(self)
+        line23 = '%define version '+version
+        line24 = '%define version '+rpmversion
+        spec  = [
+            line.replace(
+                "Source0: %{name}-%{version}.tar",
+                "Source0: %{name}-%{unmangled_version}.tar"
+            ).replace(
+                "setup.py install ",
+                "setup.py install --single-version-externally-managed "
+            ).replace(
+                "%setup",
+                "%setup -n %{name}-%{unmangled_version}"
+            ).replace(line23,line24)
+            for line in spec
+        ]
+        spec.insert(spec.index(line24)+1, "%define unmangled_version "+version)
+        return spec
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/bdist_rpm.pyc
binary ./setuptools-0.6c14devdev.egg/setuptools/command/bdist_rpm.pyc
oldhex
*
newhex
*d1f20d0a3a1ef84b630000000000000000060000004000000073420000006400006401006b0000
*6c01005a0200016400006402006b03005a03006400006402006b04005a04006403006502006601
*00640400840000830000595a010064020053280500000069ffffffff2801000000740900000062
*646973745f72706d4e520000000063000000000000000002000000420000007343000000650000
*5a01006400008400005a02006503006904006401006a00006f1000016402006403008401005a05
*006e0100016404008400005a06006405008400005a070052532806000000630100000001000000
*0200000043000000731a0000007400006901007c0000830100016400007c00005f030064000053
*28010000004e2804000000740a0000005f62646973745f72706d7412000000696e697469616c69
*7a655f6f7074696f6e7374040000004e6f6e6574060000006e6f5f656767280100000074040000
*0073656c662800000000280000000073350000006275696c645c62646973742e77696e33325c65
*67675c7365747570746f6f6c735c636f6d6d616e645c62646973745f72706d2e70795202000000
*0b000000730400000000010d017303000000322e35690100000063040000000400000008000000
*43000000739c0000007400006901007c00007c01007c02007c0300830400017c02007c00006902
*006a02006f7200017c01006903006401008301006f6200017404007c0000690500640200670000
*8303006906006403007c01006903006404008301006f070001640500700b000174070069080064
*060020740900690a00690b007c0200740900690a00690c007c0100830100830200660300830100
*016e0100016400005328070000004e73040000002e72706d740a000000646973745f66696c6573
*520000000073080000002e7372632e72706d7403000000616e796903000000280d000000520100
*000074090000006d6f76655f66696c657408000000646973745f6469727408000000656e647377
*697468740700000067657461747472740c000000646973747269627574696f6e74060000006170
*70656e647403000000737973740700000076657273696f6e74020000006f737404000000706174
*6874040000006a6f696e7408000000626173656e616d6528040000005205000000740300000073
*7263740300000064737474050000006c6576656c2800000000280000000073350000006275696c
*645c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c6264
*6973745f72706d2e7079520800000011000000730c000000000116012001150103012101630100
*0000010000000200000043000000731e0000007c0000690000640100830100017401006902007c
*0000830100016400005328020000004e74080000006567675f696e666f2803000000740b000000
*72756e5f636f6d6d616e645201000000740300000072756e280100000052050000002800000000
*280000000073350000006275696c645c62646973742e77696e33325c6567675c7365747570746f
*6f6c735c636f6d6d616e645c62646973745f72706d2e707952190000001a000000730400000000
*010d01630100000008000000060000004300000073ba0000007c00006900006901008300007d01
*007c01006902006401006402008302007d02007403006904007c00008301007d03006403007c01
*00177d04006403007c0200177d0500670000047d06007c0300445d3d007d07007c06007c070069
*02006404006405008302006902006406006407008302006902006408006409008302006902007c
*04007c050083020012714f007e06007d03007c03006905007c03006906007c0500830100640a00
*17640b007c010017830200017c030053280c0000004e74010000002d74010000005f7310000000
*25646566696e652076657273696f6e20731f000000536f75726365303a20257b6e616d657d2d25
*7b76657273696f6e7d2e7461727329000000536f75726365303a20257b6e616d657d2d257b756e
*6d616e676c65645f76657273696f6e7d2e746172731100000073657475702e707920696e737461
*6c6c20733500000073657475702e707920696e7374616c6c202d2d73696e676c652d7665727369
*6f6e2d65787465726e616c6c792d6d616e61676564207306000000257365747570732600000025
*7365747570202d6e20257b6e616d657d2d257b756e6d616e676c65645f76657273696f6e7d6901
*000000731a00000025646566696e6520756e6d616e676c65645f76657273696f6e202807000000
*520c000000740b0000006765745f76657273696f6e74070000007265706c616365520100000074
*0f0000005f6d616b655f737065635f66696c657406000000696e736572747405000000696e6465
*7828080000005205000000520f000000740a00000072706d76657273696f6e7404000000737065
*6374060000006c696e65323374060000006c696e65323474040000005f5b315d74040000006c69
*6e652800000000280000000073350000006275696c645c62646973742e77696e33325c6567675c
*7365747570746f6f6c735c636f6d6d616e645c62646973745f72706d2e7079521e0000002a0000
*00731200000000010f0112010f010a010a02070a4a022101280800000074080000005f5f6e616d
*655f5f740a0000005f5f6d6f64756c655f5f5202000000520e000000520f000000520800000052
*19000000521e00000028000000002800000000280000000073350000006275696c645c62646973
*742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c62646973745f7270
*6d2e7079520000000009000000730a000000060209041002100909102805000000741b00000064
*6973747574696c732e636f6d6d616e642e62646973745f72706d52000000005201000000520e00
*0000521000000028000000002800000000280000000073350000006275696c645c62646973742e
*77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c62646973745f72706d2e
*707974080000003c6d6f64756c653e06000000730400000010011802
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/bdist_wininst.py
hunk ./setuptools-0.6c14devdev.egg/setuptools/command/bdist_wininst.py 1
+from distutils.command.bdist_wininst import bdist_wininst as _bdist_wininst
+import os, sys
+
+class bdist_wininst(_bdist_wininst):
+
+    def create_exe(self, arcname, fullname, bitmap=None):
+        _bdist_wininst.create_exe(self, arcname, fullname, bitmap)
+        dist_files = getattr(self.distribution, 'dist_files', [])
+
+        if self.target_version:
+            installer_name = os.path.join(self.dist_dir,
+                                          "%s.win32-py%s.exe" %
+                                           (fullname, self.target_version))
+            pyversion = self.target_version
+
+            # fix 2.5 bdist_wininst ignoring --target-version spec
+            bad = ('bdist_wininst','any',installer_name)
+            if bad in dist_files:
+                dist_files.remove(bad)
+        else:
+            installer_name = os.path.join(self.dist_dir,
+                                          "%s.win32.exe" % fullname)
+            pyversion = 'any'
+        good = ('bdist_wininst', pyversion, installer_name)
+        if good not in dist_files:
+            dist_files.append(good)
+
+    def reinitialize_command (self, command, reinit_subcommands=0):
+        cmd = self.distribution.reinitialize_command(
+            command, reinit_subcommands)
+        if command in ('install', 'install_lib'):
+            cmd.install_lib = None  # work around distutils bug
+        return cmd
+
+    def run(self):
+        self._is_running = True
+        try:
+            _bdist_wininst.run(self)
+        finally:
+            self._is_running = False
+
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/bdist_wininst.pyc
binary ./setuptools-0.6c14devdev.egg/setuptools/command/bdist_wininst.pyc
oldhex
*
newhex
*d1f20d0a3c1ef84b630000000000000000060000004000000073420000006400006401006b0000
*6c01005a0200016400006402006b03005a03006400006402006b04005a04006403006502006601
*00640400840000830000595a010064020053280500000069ffffffff2801000000740d00000062
*646973745f77696e696e73744e5200000000630000000000000000020000004200000073290000
*006500005a01006404006400008401005a03006401006402008401005a04006403008400005a05
*0052532805000000630400000009000000050000004300000073e70000007400006901007c0000
*7c01007c02007c0300830400017402007c00006903006401006700008303007d04007c00006904
*006f5f00017405006906006907007c00006908006402007c02007c000069040066020016830200
*7d05007c00006904007d06006403006404007c05006603007d07007c07007c04006a06006f1100
*017c04006909007c07008301000171b600016e2300017405006906006907007c00006908006405
*007c0200168302007d05006404007d06006403007c06007c05006603007d08007c08007c04006a
*07006f1100017c0400690a007c0800830100016e0100016400005328060000004e740a00000064
*6973745f66696c6573731100000025732e77696e33322d707925732e6578655200000000740300
*0000616e79730c00000025732e77696e33322e657865280b000000740e0000005f62646973745f
*77696e696e7374740a0000006372656174655f657865740700000067657461747472740c000000
*646973747269627574696f6e740e0000007461726765745f76657273696f6e74020000006f7374
*040000007061746874040000006a6f696e7408000000646973745f646972740600000072656d6f
*76657406000000617070656e642809000000740400000073656c6674070000006172636e616d65
*740800000066756c6c6e616d6574060000006269746d61705201000000740e000000696e737461
*6c6c65725f6e616d657409000000707976657273696f6e74030000006261647404000000676f6f
*642800000000280000000073390000006275696c645c62646973742e77696e33325c6567675c73
*65747570746f6f6c735c636f6d6d616e645c62646973745f77696e696e73742e70795204000000
*0600000073200000000001160115020a010f010301130109030f010d0115020f010d0106010f01
*0d016900000000630300000004000000030000004300000073330000007c00006900006901007c
*01007c02008302007d03007c01006403006a06006f0d00016400007c03005f03006e0100017c03
*005328040000004e7407000000696e7374616c6c740b000000696e7374616c6c5f6c6962280200
*00007307000000696e7374616c6c730b000000696e7374616c6c5f6c6962280400000052060000
*0074140000007265696e697469616c697a655f636f6d6d616e6474040000004e6f6e6552170000
*002804000000520e0000007407000000636f6d6d616e6474120000007265696e69745f73756263
*6f6d6d616e64737403000000636d642800000000280000000073390000006275696c645c626469
*73742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c62646973745f77
*696e696e73742e707952180000001c000000730a000000000109010c010d010d01630100000001
*0000000600000043000000732b0000007400007c00005f01007a11007402006903007c00008301
*0001576400007404007c00005f0100586400005328010000004e28050000007404000000547275
*65740b0000005f69735f72756e6e696e675203000000740300000072756e740500000046616c73
*652801000000520e0000002800000000280000000073390000006275696c645c62646973742e77
*696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c62646973745f77696e696e
*73742e7079521f00000023000000730800000000010901030111024e280600000074080000005f
*5f6e616d655f5f740a0000005f5f6d6f64756c655f5f521900000052040000005218000000521f
*00000028000000002800000000280000000073390000006275696c645c62646973742e77696e33
*325c6567675c7365747570746f6f6c735c636f6d6d616e645c62646973745f77696e696e73742e
*7079520000000004000000730600000006020c160c072805000000741f00000064697374757469
*6c732e636f6d6d616e642e62646973745f77696e696e7374520000000052030000005208000000
*740300000073797328000000002800000000280000000073390000006275696c645c6264697374
*2e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c62646973745f77696e
*696e73742e707974080000003c6d6f64756c653e01000000730400000010011802
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/build_ext.py
hunk ./setuptools-0.6c14devdev.egg/setuptools/command/build_ext.py 1
+from distutils.command.build_ext import build_ext as _du_build_ext
+try:
+    # Attempt to use Pyrex for building extensions, if available
+    from Pyrex.Distutils.build_ext import build_ext as _build_ext
+except ImportError:
+    _build_ext = _du_build_ext
+
+import os, sys
+from distutils.file_util import copy_file
+from setuptools.extension import Library
+from distutils.ccompiler import new_compiler
+from distutils.sysconfig import customize_compiler, get_config_var
+get_config_var("LDSHARED")  # make sure _config_vars is initialized
+from distutils.sysconfig import _config_vars
+from distutils import log
+from distutils.errors import *
+
+have_rtld = False
+use_stubs = False
+libtype = 'shared'
+
+if sys.platform == "darwin":
+    use_stubs = True
+elif os.name != 'nt':
+    try:
+        from dl import RTLD_NOW
+        have_rtld = True
+        use_stubs = True
+    except ImportError:
+        pass
+
+def if_dl(s):
+    if have_rtld:
+        return s
+    return ''
+
+
+
+
+
+
+class build_ext(_build_ext):
+    def run(self):
+        """Build extensions in build directory, then copy if --inplace"""
+        old_inplace, self.inplace = self.inplace, 0
+        _build_ext.run(self)
+        self.inplace = old_inplace
+        if old_inplace:
+            self.copy_extensions_to_source()
+
+    def copy_extensions_to_source(self):
+        build_py = self.get_finalized_command('build_py')
+        for ext in self.extensions:
+            fullname = self.get_ext_fullname(ext.name)
+            filename = self.get_ext_filename(fullname)
+            modpath = fullname.split('.')
+            package = '.'.join(modpath[:-1])
+            package_dir = build_py.get_package_dir(package)
+            dest_filename = os.path.join(package_dir,os.path.basename(filename))
+            src_filename = os.path.join(self.build_lib,filename)
+
+            # Always copy, even if source is older than destination, to ensure
+            # that the right extensions for the current Python/platform are
+            # used.
+            copy_file(
+                src_filename, dest_filename, verbose=self.verbose,
+                dry_run=self.dry_run
+            )
+            if ext._needs_stub:
+                self.write_stub(package_dir or os.curdir, ext, True)
+
+
+    if _build_ext is not _du_build_ext and not hasattr(_build_ext,'pyrex_sources'):
+        # Workaround for problems using some Pyrex versions w/SWIG and/or 2.4
+        def swig_sources(self, sources, *otherargs):
+            # first do any Pyrex processing
+            sources = _build_ext.swig_sources(self, sources) or sources
+            # Then do any actual SWIG stuff on the remainder
+            return _du_build_ext.swig_sources(self, sources, *otherargs)
+
+
+
+    def get_ext_filename(self, fullname):
+        filename = _build_ext.get_ext_filename(self,fullname)
+        ext = self.ext_map[fullname]
+        if isinstance(ext,Library):
+            fn, ext = os.path.splitext(filename)
+            return self.shlib_compiler.library_filename(fn,libtype)
+        elif use_stubs and ext._links_to_dynamic:
+            d,fn = os.path.split(filename)
+            return os.path.join(d,'dl-'+fn)
+        else:
+            return filename
+
+    def initialize_options(self):
+        _build_ext.initialize_options(self)
+        self.shlib_compiler = None
+        self.shlibs = []
+        self.ext_map = {}
+
+    def finalize_options(self):
+        _build_ext.finalize_options(self)
+        self.extensions = self.extensions or []
+        self.check_extensions_list(self.extensions)
+        self.shlibs = [ext for ext in self.extensions
+                        if isinstance(ext,Library)]
+        if self.shlibs:
+            self.setup_shlib_compiler()
+        for ext in self.extensions:
+            ext._full_name = self.get_ext_fullname(ext.name)
+        for ext in self.extensions:
+            fullname = ext._full_name
+            self.ext_map[fullname] = ext
+            ltd = ext._links_to_dynamic = \
+                self.shlibs and self.links_to_dynamic(ext) or False
+            ext._needs_stub = ltd and use_stubs and not isinstance(ext,Library)
+            filename = ext._file_name = self.get_ext_filename(fullname)
+            libdir = os.path.dirname(os.path.join(self.build_lib,filename))
+            if ltd and libdir not in ext.library_dirs:
+                ext.library_dirs.append(libdir)
+            if ltd and use_stubs and os.curdir not in ext.runtime_library_dirs:
+                ext.runtime_library_dirs.append(os.curdir)
+
+    def setup_shlib_compiler(self):
+        compiler = self.shlib_compiler = new_compiler(
+            compiler=self.compiler, dry_run=self.dry_run, force=self.force
+        )
+        if sys.platform == "darwin":
+            tmp = _config_vars.copy()
+            try:
+                # XXX Help!  I don't have any idea whether these are right...
+                _config_vars['LDSHARED'] = "gcc -Wl,-x -dynamiclib -undefined dynamic_lookup"
+                _config_vars['CCSHARED'] = " -dynamiclib"
+                _config_vars['SO'] = ".dylib"
+                customize_compiler(compiler)
+            finally:
+                _config_vars.clear()
+                _config_vars.update(tmp)
+        else:
+            customize_compiler(compiler)
+
+        if self.include_dirs is not None:
+            compiler.set_include_dirs(self.include_dirs)
+        if self.define is not None:
+            # 'define' option is a list of (name,value) tuples
+            for (name,value) in self.define:
+                compiler.define_macro(name, value)
+        if self.undef is not None:
+            for macro in self.undef:
+                compiler.undefine_macro(macro)
+        if self.libraries is not None:
+            compiler.set_libraries(self.libraries)
+        if self.library_dirs is not None:
+            compiler.set_library_dirs(self.library_dirs)
+        if self.rpath is not None:
+            compiler.set_runtime_library_dirs(self.rpath)
+        if self.link_objects is not None:
+            compiler.set_link_objects(self.link_objects)
+
+        # hack so distutils' build_extension() builds a library instead
+        compiler.link_shared_object = link_shared_object.__get__(compiler)
+
+
+
+    def get_export_symbols(self, ext):
+        if isinstance(ext,Library):
+            return ext.export_symbols
+        return _build_ext.get_export_symbols(self,ext)
+
+    def build_extension(self, ext):
+        _compiler = self.compiler
+        try:
+            if isinstance(ext,Library):
+                self.compiler = self.shlib_compiler
+            _build_ext.build_extension(self,ext)
+            if ext._needs_stub:
+                self.write_stub(
+                    self.get_finalized_command('build_py').build_lib, ext
+                )
+        finally:
+            self.compiler = _compiler
+
+    def links_to_dynamic(self, ext):
+        """Return true if 'ext' links to a dynamic lib in the same package"""
+        # XXX this should check to ensure the lib is actually being built
+        # XXX as dynamic, and not just using a locally-found version or a
+        # XXX static-compiled version
+        libnames = dict.fromkeys([lib._full_name for lib in self.shlibs])
+        pkg = '.'.join(ext._full_name.split('.')[:-1]+[''])
+        for libname in ext.libraries:
+            if pkg+libname in libnames: return True
+        return False
+
+    def get_outputs(self):
+        outputs = _build_ext.get_outputs(self)
+        optimize = self.get_finalized_command('build_py').optimize
+        for ext in self.extensions:
+            if ext._needs_stub:
+                base = os.path.join(self.build_lib, *ext._full_name.split('.'))
+                outputs.append(base+'.py')
+                outputs.append(base+'.pyc')
+                if optimize:
+                    outputs.append(base+'.pyo')
+        return outputs
+
+    def write_stub(self, output_dir, ext, compile=False):
+        log.info("writing stub loader for %s to %s",ext._full_name, output_dir)
+        stub_file = os.path.join(output_dir, *ext._full_name.split('.'))+'.py'
+        if compile and os.path.exists(stub_file):
+            raise DistutilsError(stub_file+" already exists! Please delete.")
+        if not self.dry_run:
+            f = open(stub_file,'w')
+            f.write('\n'.join([
+                "def __bootstrap__():",
+                "   global __bootstrap__, __file__, __loader__",
+                "   import sys, os, pkg_resources, imp"+if_dl(", dl"),
+                "   __file__ = pkg_resources.resource_filename(__name__,%r)"
+                   % os.path.basename(ext._file_name),
+                "   del __bootstrap__",
+                "   if '__loader__' in globals():",
+                "       del __loader__",
+                if_dl("   old_flags = sys.getdlopenflags()"),
+                "   old_dir = os.getcwd()",
+                "   try:",
+                "     os.chdir(os.path.dirname(__file__))",
+                if_dl("     sys.setdlopenflags(dl.RTLD_NOW)"),
+                "     imp.load_dynamic(__name__,__file__)",
+                "   finally:",
+                if_dl("     sys.setdlopenflags(old_flags)"),
+                "     os.chdir(old_dir)",
+                "__bootstrap__()",
+                "" # terminal \n
+            ]))
+            f.close()
+        if compile:
+            from distutils.util import byte_compile
+            byte_compile([stub_file], optimize=0,
+                         force=True, dry_run=self.dry_run)
+            optimize = self.get_finalized_command('install_lib').optimize
+            if optimize > 0:
+                byte_compile([stub_file], optimize=optimize,
+                             force=True, dry_run=self.dry_run)
+            if os.path.exists(stub_file) and not self.dry_run:
+                os.unlink(stub_file)
+
+
+if use_stubs or os.name=='nt':
+    # Build shared libraries
+    #
+    def link_shared_object(self, objects, output_libname, output_dir=None,
+        libraries=None, library_dirs=None, runtime_library_dirs=None,
+        export_symbols=None, debug=0, extra_preargs=None,
+        extra_postargs=None, build_temp=None, target_lang=None
+    ):  self.link(
+            self.SHARED_LIBRARY, objects, output_libname,
+            output_dir, libraries, library_dirs, runtime_library_dirs,
+            export_symbols, debug, extra_preargs, extra_postargs,
+            build_temp, target_lang
+        )
+else:
+    # Build static libraries everywhere else
+    libtype = 'static'
+
+    def link_shared_object(self, objects, output_libname, output_dir=None,
+        libraries=None, library_dirs=None, runtime_library_dirs=None,
+        export_symbols=None, debug=0, extra_preargs=None,
+        extra_postargs=None, build_temp=None, target_lang=None
+    ):
+        # XXX we need to either disallow these attrs on Library instances,
+        #     or warn/abort here if set, or something...
+        #libraries=None, library_dirs=None, runtime_library_dirs=None,
+        #export_symbols=None, extra_preargs=None, extra_postargs=None,
+        #build_temp=None
+
+        assert output_dir is None   # distutils build_ext doesn't pass this
+        output_dir,filename = os.path.split(output_libname)
+        basename, ext = os.path.splitext(filename)
+        if self.library_filename("x").startswith('lib'):
+            # strip 'lib' prefix; this is kludgy if some platform uses
+            # a different prefix
+            basename = basename[3:]
+
+        self.create_static_lib(
+            objects, basename, output_dir, debug, target_lang
+        )
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/build_ext.pyc
binary ./setuptools-0.6c14devdev.egg/setuptools/command/build_ext.pyc
oldhex
*
newhex
*d1f20d0a3c1ef84b6300000000000000001d0000004000000073da0100006400006401006b0000
*6c01005a0200017914006400006401006b03006c01005a040001576e1900046505006a0a006f0d
*00010101016502005a04006e020001586400006402006b06005a06006400006402006b07005a07
*006400006403006b08006c09005a0900016400006404006b0a006c0b005a0b0001640000640500
*6b0c006c0d005a0d00016400006406006b0e006c0f005a0f006c10005a10000165100064070083
*0100016400006408006b0e006c11005a1100016400006409006b12006c13005a13000164000064
*0a006b1400546515005a16006515005a1700640b005a1800650700691900640c006a02006f0a00
*01651a005a17006e4b0001650600691b00640d006a03006f3a0001792000640000640e006b1c00
*6c1d005a1d0001651a005a1600651a005a170057714801046505006a0a006f0700010101017148
*0101586e010001640f008400005a1e00641000650400660100641100840000830000595a010065
*170070100001650600691b00640d006a02006f2b00016402006402006402006402006402006412
*00640200640200640200640200641300840a005a20006e2e00016414005a180064020064020064
*0200640200640200641200640200640200640200640200641500840a005a200064020053281600
*000069ffffffff280100000074090000006275696c645f6578744e28010000007409000000636f
*70795f66696c65280100000074070000004c6962726172792801000000740c0000006e65775f63
*6f6d70696c657228020000007412000000637573746f6d697a655f636f6d70696c6572740e0000
*006765745f636f6e6669675f76617274080000004c445348415245442801000000740c0000005f
*636f6e6669675f76617273280100000074030000006c6f67280100000074010000002a74060000
*00736861726564740600000064617277696e74020000006e742801000000740800000052544c44
*5f4e4f57630100000001000000010000004300000073100000007400006f0500017c0000530164
*01005328020000004e740000000028010000007409000000686176655f72746c64280100000074
*0100000073280000000028000000007349000000433a5c7461686f652d6c6166735c7365747570
*746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d61
*6e645c6275696c645f6578742e7079740500000069665f646c2000000073060000000001070105
*015200000000630000000000000000030000004200000073990000006500005a01006400008400
*005a02006401008400005a03006504006505006a09006f1e00016506006504006402008302000c
*6f0d00016403008400005a07006e0100016404008400005a08006405008400005a090064060084
*00005a0a006407008400005a0b006408008400005a0c006409008400005a0d00640a008400005a
*0e00640b008400005a0f00651000640c008401005a11005253280d000000630100000002000000
*020000004300000073420000007c0000690000640100027d01007c00005f00007401006902007c
*0000830100017c01007c00005f00007c01006f0e00017c0000690300830000016e010001640200
*532803000000733b0000004275696c6420657874656e73696f6e7320696e206275696c64206469
*726563746f72792c207468656e20636f7079206966202d2d696e706c61636569000000004e2804
*0000007407000000696e706c616365740a0000005f6275696c645f657874740300000072756e74
*19000000636f70795f657874656e73696f6e735f746f5f736f7572636528020000007404000000
*73656c66740b0000006f6c645f696e706c616365280000000028000000007349000000433a5c74
*61686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c73
*65747570746f6f6c735c636f6d6d616e645c6275696c645f6578742e707952140000002b000000
*730a000000000213010d010901070163010000000a000000090000004300000073fc0000007c00
*006900006401008301007d010078e6007c0000690100445ddb007d02007c00006902007c020069
*03008301007d03007c00006904007c03008301007d04007c03006905006402008301007d050064
*02006906007c0500640300208301007d06007c01006907007c06008301007d0700740800690900
*6906007c0700740800690900690a007c04008301008302007d08007408006909006906007c0000
*690b007c04008302007d0900740c007c09007c08006404007c0000690d006405007c0000690e00
*830202017c0200690f006f2100017c00006910007c0700700700017408006911007c0200741200
*8303000171190001711900576400005328060000004e74080000006275696c645f707974010000
*002e69ffffffff7407000000766572626f736574070000006472795f72756e2813000000741500
*00006765745f66696e616c697a65645f636f6d6d616e64740a000000657874656e73696f6e7374
*100000006765745f6578745f66756c6c6e616d6574040000006e616d6574100000006765745f65
*78745f66696c656e616d65740500000073706c697474040000006a6f696e740f0000006765745f
*7061636b6167655f64697274020000006f737404000000706174687408000000626173656e616d
*6574090000006275696c645f6c69625201000000521a000000521b000000740b0000005f6e6565
*64735f73747562740a00000077726974655f737475627406000000637572646972740400000054
*727565280a000000521600000052180000007403000000657874740800000066756c6c6e616d65
*740800000066696c656e616d6574070000006d6f647061746874070000007061636b616765740b
*0000007061636b6167655f646972740d000000646573745f66696c656e616d65740c0000007372
*635f66696c656e616d65280000000028000000007349000000433a5c7461686f652d6c6166735c
*7365747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c
*636f6d6d616e645c6275696c645f6578742e7079521500000033000000731e00000000010f010a
*00060112010f010f0113010f0121011805030112010a020a01740d00000070797265785f736f75
*726365736302000000030000000400000047000000732c0000007400006901007c00007c010083
*0200700400017c01007d01007402006901007c00007c01007c02008c02005328010000004e2803
*0000005213000000740c000000737769675f736f7572636573740d0000005f64755f6275696c64
*5f657874280300000052160000007407000000736f757263657374090000006f74686572617267
*73280000000028000000007349000000433a5c7461686f652d6c6166735c7365747570746f6f6c
*732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c62
*75696c645f6578742e707952350000004b00000073040000000002190263020000000600000004
*0000004300000073a40000007400006901007c00007c01008302007d02007c00006902007c0100
*197d03007403007c03007404008302006f2c00017405006906006907007c02008301005c02007d
*04007d03007c00006908006909007c0400740a008302005301740b006f3a00017c0300690c006f
*300001740500690600690d007c02008301005c02007d05007d0400740500690600690e007c0500
*6401007c04001783020053017c0200536400005328020000004e7303000000646c2d280f000000
*5213000000522000000074070000006578745f6d6170740a0000006973696e7374616e63655202
*00000052240000005225000000740800000073706c6974657874740e00000073686c69625f636f
*6d70696c657274100000006c6962726172795f66696c656e616d6574070000006c696274797065
*74090000007573655f737475627374110000005f6c696e6b735f746f5f64796e616d6963522100
*0000522200000028060000005216000000522d000000522e000000522c0000007402000000666e
*740100000064280000000028000000007349000000433a5c7461686f652d6c6166735c73657475
*70746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d
*616e645c6275696c645f6578742e70795220000000530000007312000000000112010d01100118
*0114011101180118026301000000010000000200000043000000732c0000007400006901007c00
*00830100016400007c00005f03006700007c00005f04006800007c00005f050064000053280100
*00004e280600000052130000007412000000696e697469616c697a655f6f7074696f6e73740400
*00004e6f6e65523c000000740600000073686c6962735239000000280100000052160000002800
*00000028000000007349000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d30
*2e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c6275696c
*645f6578742e707952430000005f000000730800000000010d0109010901630100000007000000
*090000004300000073bf0100007400006901007c0000830100017c000069020070040001670000
*7c00005f02007c00006903007c000069020083010001670000047d01007c0000690200445d2100
*7d02007404007c02007405008302006f0b00017c01007c020012713e0001713e007e01007c0000
*5f06007c00006906006f0e00017c0000690700830000016e0100017826007c0000690200445d1b
*007d02007c00006908007c02006909008301007c02005f0a00718d0057780c017c000069020044
*5d01017d02007c0200690a007d03007c02007c0000690b007c03003c7c00006906006f1000017c
*0000690c007c020083010070040001740d00047d04007c02005f0e007c04006f150001740f006f
*0e00017404007c02007405008302000c7c02005f10007c00006911007c0300830100047d05007c
*02005f12007413006914006915007413006914006916007c00006917007c05008302008301007d
*06007c04006f2400017c06007c02006918006a07006f1400017c02006918006919007c06008301
*00016e0100017c04006f310001740f006f2a0001741300691a007c0200691b006a07006f170001
*7c0200691b00691900741300691a008301000171b6000171b600576400005328010000004e281c
*0000005213000000741000000066696e616c697a655f6f7074696f6e73521d0000007415000000
*636865636b5f657874656e73696f6e735f6c697374523a00000052020000005245000000741400
*000073657475705f73686c69625f636f6d70696c6572521e000000521f000000740a0000005f66
*756c6c5f6e616d65523900000074100000006c696e6b735f746f5f64796e616d69637405000000
*46616c73655240000000523f00000052280000005220000000740a0000005f66696c655f6e616d
*655224000000522500000074070000006469726e616d6552220000005227000000740c0000006c
*6962726172795f646972737406000000617070656e64522a000000741400000072756e74696d65
*5f6c6962726172795f646972732807000000521600000074040000005f5b315d522c000000522d
*00000074030000006c7464522e00000074060000006c6962646972280000000028000000007349
*000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465
*762e6567675c7365747570746f6f6c735c636f6d6d616e645c6275696c645f6578742e70795246
*00000065000000732c00000000010d0113011001140127010a010e010a00060119010a00060109
*010d022701210116012401170114012101630100000006000000090000004300000073d9010000
*7400006401007c00006901006402007c00006902006403007c0000690300830003047d01007c00
*005f04007405006906006404006a02006f5700017407006908008300007d02007a2c0064050074
*07006406003c6407007407006408003c640900740700640a003c7409007c010083010001576400
*00740700690a0083000001740700690b007c020083010001586e0b00017409007c010083010001
*7c0000690c006400006a09006f1400017c0100690e007c0000690c00830100016e0100017c0000
*690f006400006a09006f2e0001782b007c0000690f00445d1c005c02007d03007d04007c010069
*10007c03007c04008302000171da00576e0100017c00006911006400006a09006f250001782200
*7c0000691100445d13007d05007c01006912007c050083010001711801576e0100017c00006913
*006400006a09006f1400017c01006914007c0000691300830100016e0100017c00006915006400
*006a09006f1400017c01006916007c0000691500830100016e0100017c00006917006400006a09
*006f1400017c01006918007c0000691700830100016e0100017c00006919006400006a09006f14
*00017c0100691a007c0000691900830100016e010001741b00691c007c01008301007c01005f1b
*0064000053280b0000004e7408000000636f6d70696c6572521b0000007405000000666f726365
*520b0000007330000000676363202d576c2c2d78202d64796e616d69636c6962202d756e646566
*696e65642064796e616d69635f6c6f6f6b75705206000000730c000000202d64796e616d69636c
*69627408000000434353484152454473060000002e64796c69627402000000534f281d00000052
*030000005254000000521b0000005255000000523c00000074030000007379737408000000706c
*6174666f726d52070000007404000000636f707952040000007405000000636c65617274060000
*00757064617465740c000000696e636c7564655f64697273524400000074100000007365745f69
*6e636c7564655f646972737406000000646566696e65740c000000646566696e655f6d6163726f
*7405000000756e646566740e000000756e646566696e655f6d6163726f74090000006c69627261
*72696573740d0000007365745f6c6962726172696573524e00000074100000007365745f6c6962
*726172795f646972737405000000727061746874180000007365745f72756e74696d655f6c6962
*726172795f64697273740c0000006c696e6b5f6f626a6563747374100000007365745f6c696e6b
*5f6f626a6563747374120000006c696e6b5f7368617265645f6f626a65637474070000005f5f67
*65745f5f2806000000521600000052540000007403000000746d70521f00000074050000007661
*6c756574050000006d6163726f280000000028000000007349000000433a5c7461686f652d6c61
*66735c7365747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f
*6c735c636f6d6d616e645c6275696c645f6578742e707952480000007c000000733e0000000001
*0601250210010c0103020a010a010a010e020a0112020a021001140110020a000c01180110010a
*000601150110011401100114011001140110011403630200000002000000030000004300000073
*280000007400007c01007401008302006f0800017c010069020053017403006904007c00007c01
*008302005328010000004e2805000000523a0000005202000000740e0000006578706f72745f73
*796d626f6c73521300000074120000006765745f6578706f72745f73796d626f6c732802000000
*5216000000522c000000280000000028000000007349000000433a5c7461686f652d6c6166735c
*7365747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c
*636f6d6d616e645c6275696c645f6578742e70795270000000a500000073060000000001100108
*01630200000003000000060000004300000073780000007c00006900007d02007a5e007401007c
*01007402008302006f1000017c00006903007c00005f00006e0100017404006905007c00007c01
*00830200017c01006906006f2000017c00006907007c00006908006401008301006909007c0100
*830200016e010001576400007c02007c00005f0000586400005328020000004e5218000000280a
*0000005254000000523a0000005202000000523c0000005213000000740f0000006275696c645f
*657874656e73696f6e52280000005229000000521c000000522700000028030000005216000000
*522c00000074090000005f636f6d70696c6572280000000028000000007349000000433a5c7461
*686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c7365
*747570746f6f6c735c636f6d6d616e645c6275696c645f6578742e70795271000000aa00000073
*120000000001090103011001100110010a0106011e036302000000070000000600000043000000
*7384000000740000690100670000047d02007c0000690200445d10007d03007c02007c03006903
*00127114007e02008301007d04006401006904007c010069030069050064010083010064020020
*640300670100178301007d05007827007c0100690600445d1c007d06007c05007c0600177c0400
*6a06006f050001740700530171600057740800532804000000733f00000052657475726e207472
*7565206966202765787427206c696e6b7320746f20612064796e616d6963206c696220696e2074
*68652073616d65207061636b616765521900000069ffffffff520e000000280900000074040000
*0064696374740800000066726f6d6b657973524500000052490000005222000000522100000052
*63000000522b000000524b00000028070000005216000000522c00000052510000007403000000
*6c696274080000006c69626e616d65737403000000706b6774070000006c69626e616d65280000
*000028000000007349000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e
*366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c6275696c64
*5f6578742e7079524a000000b7000000730e0000000005300126010a0006011100090163010000
*0005000000050000004300000073a90000007400006901007c00008301007d01007c0000690200
*6401008301006903007d02007881007c0000690400445d76007d03007c03006905006f66000174
*06006907006908007c00006909007c0300690a00690b006402008301008c01007d04007c010069
*0c007c040064030017830100017c0100690c007c040064040017830100017c02006f1500017c01
*00690c007c0400640500178301000171a10001712b0001712b00577c01005328060000004e5218
*000000521900000073030000002e707973040000002e70796373040000002e70796f280d000000
*5213000000740b0000006765745f6f757470757473521c00000074080000006f7074696d697a65
*521d00000052280000005224000000522500000052220000005227000000524900000052210000
*00524f0000002805000000521600000074070000006f757470757473527a000000522c00000074
*0400000062617365280000000028000000007349000000433a5c7461686f652d6c6166735c7365
*747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f
*6d6d616e645c6275696c645f6578742e70795279000000c2000000731600000000010f0112010a
*0006010a0124011101110107011d01630400000008000000140000004300000073c00100007400
*006901006401007c02006902007c0100830300017403006904006905007c01007c020069020069
*06006402008301008c0100640300177d04007c03006f2700017403006904006907007c04008301
*006f1400017408007c0400640400178301008201006e0100017c000069090070980001740a007c
*04006405008302007d05007c0500690b00640600690500640700640800640900740c00640a0083
*010017640b00740300690400690d007c0200690e0083010016640c00640d00640e00740c00640f
*00830100641000641100641200740c00641300830100641400641500740c006416008301006417
*00641800641900671200830100830100017c0500690f00830000016e0100017c03006faa000164
*1a00641b006b10006c11007d0600017c06007c0400670100641c00641d00641e00741200641f00
*7c0000690900830103017c00006913006420008301006914007d07007c0700641d006a04006f26
*00017c06007c0400670100641c007c0700641e00741200641f007c0000690900830103016e0100
*017403006904006907007c04008301006f1c00017c00006909000c6f1100017403006915007c04
*008301000171bc01016e0100016400005328210000004e732000000077726974696e6720737475
*62206c6f6164657220666f7220257320746f202573521900000073030000002e7079731f000000
*20616c7265616479206578697374732120506c656173652064656c6574652e7401000000777301
*0000000a7314000000646566205f5f626f6f7473747261705f5f28293a732d000000202020676c
*6f62616c205f5f626f6f7473747261705f5f2c205f5f66696c655f5f2c205f5f6c6f616465725f
*5f7325000000202020696d706f7274207379732c206f732c20706b675f7265736f75726365732c
*20696d7073040000002c20646c733a0000002020205f5f66696c655f5f203d20706b675f726573
*6f75726365732e7265736f757263655f66696c656e616d65285f5f6e616d655f5f2c2572297314
*00000020202064656c205f5f626f6f7473747261705f5f7320000000202020696620275f5f6c6f
*616465725f5f2720696e20676c6f62616c7328293a73150000002020202020202064656c205f5f
*6c6f616465725f5f73230000002020206f6c645f666c616773203d207379732e676574646c6f70
*656e666c616773282973180000002020206f6c645f646972203d206f732e676574637764282973
*070000002020207472793a732800000020202020206f732e6368646972286f732e706174682e64
*69726e616d65285f5f66696c655f5f2929732400000020202020207379732e736574646c6f7065
*6e666c61677328646c2e52544c445f4e4f572973280000002020202020696d702e6c6f61645f64
*796e616d6963285f5f6e616d655f5f2c5f5f66696c655f5f29730b00000020202066696e616c6c
*793a732200000020202020207379732e736574646c6f70656e666c616773286f6c645f666c6167
*7329731600000020202020206f732e6368646972286f6c645f64697229730f0000005f5f626f6f
*7473747261705f5f2829520e00000069ffffffff2801000000740c000000627974655f636f6d70
*696c65527a00000069000000005255000000521b000000740b000000696e7374616c6c5f6c6962
*281600000052080000007404000000696e666f5249000000522400000052250000005222000000
*52210000007406000000657869737473740e000000446973747574696c734572726f72521b0000
*0074040000006f70656e7405000000777269746552110000005226000000524c00000074050000
*00636c6f7365740e000000646973747574696c732e7574696c527e000000522b000000521c0000
*00527a0000007406000000756e6c696e6b28080000005216000000740a0000006f75747075745f
*646972522c0000007407000000636f6d70696c657409000000737475625f66696c657401000000
*66527e000000527a000000280000000028000000007349000000433a5c7461686f652d6c616673
*5c7365747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c73
*5c636f6d6d616e645c6275696c645f6578742e70795229000000ce000000734a00000000011601
*25011a0114010a010f010c01030103010d01030113010301030103010901030103010301090103
*0103010901030103010d020e01070110011201100112010d01120114011e012812000000740800
*00005f5f6e616d655f5f740a0000005f5f6d6f64756c655f5f5214000000521500000052130000
*005236000000740700000068617361747472523500000052200000005243000000524600000052
*4800000052700000005271000000524a0000005279000000524b00000052290000002800000000
*280000000028000000007349000000433a5c7461686f652d6c6166735c7365747570746f6f6c73
*2d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c6275
*696c645f6578742e707952000000002a000000731a0000000601090809161e020d08090c090609
*1709290905090d090b090c6900000000630d0000000d0000000e0000004300000073380000007c
*00006900007c00006901007c01007c02007c03007c04007c05007c06007c07007c08007c09007c
*0a007c0b007c0c00830d00016400005328010000004e280200000074040000006c696e6b740e00
*00005348415245445f4c494252415259280d000000521600000074070000006f626a6563747374
*0e0000006f75747075745f6c69626e616d6552880000005263000000524e000000525000000052
*6f00000074050000006465627567740d00000065787472615f70726561726773740e0000006578
*7472615f706f737461726773740a0000006275696c645f74656d70740b0000007461726765745f
*6c616e67280000000028000000007349000000433a5c7461686f652d6c6166735c736574757074
*6f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e
*645c6275696c645f6578742e7079526a000000fa000000730a000000000406010c010c010c0174
*06000000737461746963630d00000010000000070000004300000073880000007c03006400006a
*080070070001740100820100017402006903006904007c02008301005c02007d03007d0d007402
*006903006905007c0d008301005c02007d0e007d0f007c00006906006401008301006907006402
*008301006f0e00017c0e006403001f7d0e006e0100017c00006908007c01007c0e007c03007c08
*007c0c00830500016400005328040000004e740100000078527500000069030000002809000000
*5244000000740e000000417373657274696f6e4572726f72522400000052250000005221000000
*523b000000523d000000740a0000007374617274737769746874110000006372656174655f7374
*617469635f6c696228100000005216000000529100000052920000005288000000526300000052
*4e0000005250000000526f00000052930000005294000000529500000052960000005297000000
*522e0000005226000000522c000000280000000028000000007349000000433a5c7461686f652d
*6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c736574757074
*6f6f6c735c636f6d6d616e645c6275696c645f6578742e7079526a00000008010000730e000000
*000b14011801180119030e0206012821000000741b000000646973747574696c732e636f6d6d61
*6e642e6275696c645f65787452000000005236000000741900000050797265782e446973747574
*696c732e6275696c645f6578745213000000740b000000496d706f72744572726f725224000000
*52580000007413000000646973747574696c732e66696c655f7574696c52010000007414000000
*7365747570746f6f6c732e657874656e73696f6e52020000007413000000646973747574696c73
*2e63636f6d70696c657252030000007413000000646973747574696c732e737973636f6e666967
*5204000000520500000052070000007409000000646973747574696c7352080000007410000000
*646973747574696c732e6572726f7273524b000000520f000000523f000000523e000000525900
*0000522b000000521f0000007402000000646c520d00000052110000005244000000526a000000
*2800000000280000000028000000007349000000433a5c7461686f652d6c6166735c7365747570
*746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d61
*6e645c6275696c645f6578742e707974080000003c6d6f64756c653e01000000734a0000001001
*030214010e010b02180110011001100116010a01100110010a0206010601060210010a01100103
*01100106010a010e010902090a16cd170303010901090116090602030109010901
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/build_py.py
hunk ./setuptools-0.6c14devdev.egg/setuptools/command/build_py.py 1
+import os.path, sys, fnmatch
+from distutils.command.build_py import build_py as _build_py
+from distutils.util import convert_path
+from glob import glob
+
+class build_py(_build_py):
+    """Enhanced 'build_py' command that includes data files with packages
+
+    The data files are specified via a 'package_data' argument to 'setup()'.
+    See 'setuptools.dist.Distribution' for more details.
+
+    Also, this version of the 'build_py' command allows you to specify both
+    'py_modules' and 'packages' in the same setup operation.
+    """
+    def finalize_options(self):
+        _build_py.finalize_options(self)
+        self.package_data = self.distribution.package_data
+        self.exclude_package_data = self.distribution.exclude_package_data or {}
+        if 'data_files' in self.__dict__: del self.__dict__['data_files']
+
+    def run(self):
+        """Build modules, packages, and copy data files to build directory"""
+        if not self.py_modules and not self.packages:
+            return
+
+        if self.py_modules:
+            self.build_modules()
+
+        if self.packages:
+            self.build_packages()
+            self.build_package_data()
+
+        # Only compile actual .py files, using our base class' idea of what our
+        # output files are.
+        self.byte_compile(_build_py.get_outputs(self, include_bytecode=0))
+
+    def __getattr__(self,attr):
+        if attr=='data_files':  # lazily compute data files
+            self.data_files = files = self._get_data_files(); return files
+        return _build_py.__getattr__(self,attr)
+
+    def _get_data_files(self):
+        """Generate list of '(package,src_dir,build_dir,filenames)' tuples"""
+        self.analyze_manifest()
+        data = []
+        for package in self.packages or ():
+            # Locate package source directory
+            src_dir = self.get_package_dir(package)
+
+            # Compute package build directory
+            build_dir = os.path.join(*([self.build_lib] + package.split('.')))
+
+            # Length of path to strip from found files
+            plen = len(src_dir)+1
+
+            # Strip directory from globbed filenames
+            filenames = [
+                file[plen:] for file in self.find_data_files(package, src_dir)
+                ]
+            data.append( (package, src_dir, build_dir, filenames) )
+        return data
+
+    def find_data_files(self, package, src_dir):
+        """Return filenames for package's data files in 'src_dir'"""
+        globs = (self.package_data.get('', [])
+                 + self.package_data.get(package, []))
+        files = self.manifest_files.get(package, [])[:]
+        for pattern in globs:
+            # Each pattern has to be converted to a platform-specific path
+            files.extend(glob(os.path.join(src_dir, convert_path(pattern))))
+        return self.exclude_data_files(package, src_dir, files)
+
+    def build_package_data(self):
+        """Copy data files into build directory"""
+        lastdir = None
+        for package, src_dir, build_dir, filenames in self.data_files:
+            for filename in filenames:
+                target = os.path.join(build_dir, filename)
+                self.mkpath(os.path.dirname(target))
+                self.copy_file(os.path.join(src_dir, filename), target)
+
+
+    def analyze_manifest(self):
+        self.manifest_files = mf = {}
+        if not self.distribution.include_package_data:
+            return
+        src_dirs = {}
+        for package in self.packages or ():
+            # Locate package source directory
+            src_dirs[assert_relative(self.get_package_dir(package))] = package
+
+        self.run_command('egg_info')
+        ei_cmd = self.get_finalized_command('egg_info')
+        for path in ei_cmd.filelist.files:
+            d,f = os.path.split(assert_relative(path))
+            prev = None
+            oldf = f
+            while d and d!=prev and d not in src_dirs:
+                prev = d
+                d, df = os.path.split(d)
+                f = os.path.join(df, f)
+            if d in src_dirs:
+                if path.endswith('.py') and f==oldf:
+                    continue    # it's a module, not data
+                mf.setdefault(src_dirs[d],[]).append(path)
+
+    def get_data_files(self): pass  # kludge 2.4 for lazy computation
+
+    if sys.version<"2.4":    # Python 2.4 already has this code
+        def get_outputs(self, include_bytecode=1):
+            """Return complete list of files copied to the build directory
+
+            This includes both '.py' files and data files, as well as '.pyc'
+            and '.pyo' files if 'include_bytecode' is true.  (This method is
+            needed for the 'install_lib' command to do its job properly, and to
+            generate a correct installation manifest.)
+            """
+            return _build_py.get_outputs(self, include_bytecode) + [
+                os.path.join(build_dir, filename)
+                for package, src_dir, build_dir,filenames in self.data_files
+                for filename in filenames
+                ]
+
+    def check_package(self, package, package_dir):
+        """Check namespace packages' __init__ for declare_namespace"""
+        try:
+            return self.packages_checked[package]
+        except KeyError:
+            pass
+
+        init_py = _build_py.check_package(self, package, package_dir)
+        self.packages_checked[package] = init_py
+
+        if not init_py or not self.distribution.namespace_packages:
+            return init_py
+
+        for pkg in self.distribution.namespace_packages:
+            if pkg==package or pkg.startswith(package+'.'):
+                break
+        else:
+            return init_py
+
+        f = open(init_py,'rU')
+        if 'declare_namespace' not in f.read():
+            from distutils.errors import DistutilsError
+            raise DistutilsError(
+              "Namespace package problem: %s is a namespace package, but its\n"
+              "__init__.py does not call declare_namespace()! Please fix it.\n"
+              '(See the setuptools manual under "Namespace Packages" for '
+              "details.)\n" % (package,)
+            )
+        f.close()
+        return init_py
+
+    def initialize_options(self):
+        self.packages_checked={}
+        _build_py.initialize_options(self)
+
+
+
+
+
+
+
+    def exclude_data_files(self, package, src_dir, files):
+        """Filter filenames for package's data files in 'src_dir'"""
+        globs = (self.exclude_package_data.get('', [])
+                 + self.exclude_package_data.get(package, []))
+        bad = []
+        for pattern in globs:
+            bad.extend(
+                fnmatch.filter(
+                    files, os.path.join(src_dir, convert_path(pattern))
+                )
+            )
+        bad = dict.fromkeys(bad)
+        seen = {}
+        return [
+            f for f in files if f not in bad
+                and f not in seen and seen.setdefault(f,1)  # ditch dupes
+        ]
+
+
+def assert_relative(path):
+    if not os.path.isabs(path):
+        return path
+    from distutils.errors import DistutilsSetupError
+    raise DistutilsSetupError(
+"""Error: setup script specifies an absolute path:
+
+    %s
+
+setup() arguments must *always* be /-separated paths relative to the
+setup.py directory, *never* absolute paths.
+""" % path
+    )
+
+
+
+
+
+
+
+
+
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/build_py.pyc
binary ./setuptools-0.6c14devdev.egg/setuptools/command/build_py.pyc
oldhex
*
newhex
*d1f20d0a3e1ef84b630000000000000000090000004000000073770000006400006401006b0000
*5a01006400006401006b02005a02006400006401006b03005a03006400006402006b04006c0500
*5a0600016400006403006b07006c08005a0800016400006404006b09006c09005a090001640500
*650600660100640600840000830000595a05006407008400005a0a0064010053280800000069ff
*ffffff4e280100000074080000006275696c645f70792801000000740c000000636f6e76657274
*5f7061746828010000007404000000676c6f625200000000630000000000000000020000004200
*000073910000006500005a01006400005a02006401008400005a03006402008400005a04006403
*008400005a05006404008400005a06006405008400005a07006406008400005a08006407008400
*005a09006408008400005a0a00650b00690c006409006a00006f100001640a00640b008401005a
*0d006e010001640c008400005a0e00640d008400005a0f00640e008400005a10005253280f0000
*007358010000456e68616e63656420276275696c645f70792720636f6d6d616e64207468617420
*696e636c7564657320646174612066696c65732077697468207061636b616765730a0a20202020
*54686520646174612066696c657320617265207370656369666965642076696120612027706163
*6b6167655f646174612720617267756d656e7420746f202773657475702829272e0a2020202053
*656520277365747570746f6f6c732e646973742e446973747269627574696f6e2720666f72206d
*6f72652064657461696c732e0a0a20202020416c736f2c20746869732076657273696f6e206f66
*2074686520276275696c645f70792720636f6d6d616e6420616c6c6f777320796f7520746f2073
*70656369667920626f74680a202020202770795f6d6f64756c65732720616e6420277061636b61
*6765732720696e207468652073616d65207365747570206f7065726174696f6e2e0a2020202063
*0100000001000000020000004300000073540000007400006901007c0000830100017c00006902
*006903007c00005f03007c0000690200690400700400016800007c00005f04006401007c000069
*05006a06006f0e00017c00006905006401003d6e0100016400005328020000004e740a00000064
*6174615f66696c6573280600000074090000005f6275696c645f7079741000000066696e616c69
*7a655f6f7074696f6e73740c000000646973747269627574696f6e740c0000007061636b616765
*5f6461746174140000006578636c7564655f7061636b6167655f6461746174080000005f5f6469
*63745f5f2801000000740400000073656c662800000000280000000073340000006275696c645c
*62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c6275696c
*645f70792e707952050000000f000000730a00000000010d010f01160110006301000000010000
*00050000004300000073750000007c00006900000c6f1000017c00006901000c6f050001640100
*53017c00006900006f0e00017c0000690200830000016e0100017c00006901006f1800017c0000
*690300830000017c0000690400830000016e0100017c00006905007406006907007c0000640200
*64030083010183010001640100532804000000733f0000004275696c64206d6f64756c65732c20
*7061636b616765732c20616e6420636f707920646174612066696c657320746f206275696c6420
*6469726563746f72794e7410000000696e636c7564655f62797465636f64656900000000280800
*0000740a00000070795f6d6f64756c657374080000007061636b61676573740d0000006275696c
*645f6d6f64756c6573740e0000006275696c645f7061636b6167657374120000006275696c645f
*7061636b6167655f64617461740c000000627974655f636f6d70696c655204000000740b000000
*6765745f6f7574707574732801000000520a000000280000000028000000007334000000627569
*6c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c62
*75696c645f70792e7079740300000072756e1500000073100000000002160105020a010e020a01
*0a010e04630200000003000000030000004300000073350000007c01006401006a02006f180001
*7c0000690000830000047c00005f01007d02007c020053017402006903007c00007c0100830200
*5328020000004e52030000002804000000740f0000005f6765745f646174615f66696c65735203
*0000005204000000740b0000005f5f676574617474725f5f2803000000520a0000007404000000
*61747472740500000066696c65732800000000280000000073340000006275696c645c62646973
*742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c6275696c645f7079
*2e7079521500000025000000730800000000010d01130005016301000000090000000800000043
*00000073bd0000007c0000690000830000016700007d010078a6007c0000690100700400016403
*00445d94007d02007c00006902007c02008301007d03007403006904006905007c000069060067
*01007c0200690700640100830100178c00007d04007408007c0300830100640200177d05006700
*00047d06007c00006909007c02007c0300830200445d11007d07007c06007c07007c05001f1271
*82007e06007d08007c0100690a007c02007c03007c04007c080066040083010001712100577c01
*00532804000000733f00000047656e6572617465206c697374206f662027287061636b6167652c
*7372635f6469722c6275696c645f6469722c66696c656e616d65732927207475706c6573740100
*00002e69010000002800000000280b0000007410000000616e616c797a655f6d616e6966657374
*520d000000740f0000006765745f7061636b6167655f64697274020000006f7374040000007061
*746874040000006a6f696e74090000006275696c645f6c6962740500000073706c697474030000
*006c656e740f00000066696e645f646174615f66696c65737406000000617070656e6428090000
*00520a00000074040000006461746174070000007061636b61676574070000007372635f646972
*74090000006275696c645f6469727404000000706c656e74040000005f5b315d74040000006669
*6c65740900000066696c656e616d65732800000000280000000073340000006275696c645c6264
*6973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c6275696c645f
*70792e707952140000002a000000731400000000020a010601110006020f032503100431021d01
*6303000000060000000800000043000000738a0000007c00006900006901006401006700008302
*007c00006900006901007c0100670000830200177d03007c00006902006901007c010067000083
*02001e7d04007836007c0300445d2e007d05007c04006903007404007405006906006907007c02
*007408007c050083010083020083010083010001714500577c00006909007c01007c02007c0400
*830300532802000000733600000052657475726e2066696c656e616d657320666f72207061636b
*616765277320646174612066696c657320696e20277372635f646972277400000000280a000000
*52070000007403000000676574740e0000006d616e69666573745f66696c657374060000006578
*74656e645202000000521b000000521c000000521d000000520100000074120000006578636c75
*64655f646174615f66696c65732806000000520a00000052240000005225000000740500000067
*6c6f6273521700000074070000007061747465726e280000000028000000007334000000627569
*6c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c62
*75696c645f70792e707952210000003f000000730e0000000002120116011601070006022c0163
*0100000008000000060000004300000073880000006401007d0100787b007c0000690100445d70
*005c04007d02007d03007d04007d0500785b007c0500445d53007d06007402006903006904007c
*04007c06008302007d07007c00006905007402006903006906007c0700830100830100017c0000
*6907007402006903006904007c03007c06008302007c0700830200017129005771100057640100
*5328020000007324000000436f707920646174612066696c657320696e746f206275696c642064
*69726563746f72794e280800000074040000004e6f6e655203000000521b000000521c00000052
*1d00000074060000006d6b7061746874070000006469726e616d657409000000636f70795f6669
*6c652808000000520a00000074070000006c617374646972522400000052250000005226000000
*522a000000740800000066696c656e616d65740600000074617267657428000000002800000000
*73340000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c63
*6f6d6d616e645c6275696c645f70792e70795210000000490000007310000000000206010a0012
*01070006011501190163010000000b00000006000000430000007368010000680000047c00005f
*00007d01007c00006901006902007005000164000053016800007d02007831007c000069030070
*040001640300445d1f007d03007c03007c02007404007c00006905007c03008301008301003c71
*3600577c0000690600640100830100017c00006907006401008301007d040078ec007c04006908
*00690900445dde007d0500740a00690b00690c007404007c05008301008301005c02007d06007d
*07006400007d08007c07007d09007859007c06006f5100017c06007c08006a03006f4400017c06
*007c02006a07006f3700017c06007d0800740a00690b00690c007c06008301005c02007d06007d
*0a00740a00690b00690e007c0a007c07008302007d070071b50001577c06007c02006a06006f45
*00017c0500690f006402008301006f1400017c07007c09006a02006f0700017182006e0100017c
*01006910007c02007c0600196700008302006911007c0500830100017182000171820057640000
*5328040000004e74080000006567675f696e666f73030000002e70792800000000281200000052
*2d00000052060000007414000000696e636c7564655f7061636b6167655f64617461520d000000
*740f0000006173736572745f72656c6174697665521a000000740b00000072756e5f636f6d6d61
*6e6474150000006765745f66696e616c697a65645f636f6d6d616e64740800000066696c656c69
*73745217000000521b000000521c000000521f0000005232000000521d0000007408000000656e
*647377697468740a00000073657464656661756c745222000000280b000000520a000000740200
*00006d6674080000007372635f646972735224000000740600000065695f636d64521c00000074
*010000006474010000006674040000007072657674040000006f6c646674020000006466280000
*0000280000000073340000006275696c645c62646973742e77696e33325c6567675c7365747570
*746f6f6c735c636f6d6d616e645c6275696c645f70792e7079521900000053000000732e000000
*00010d010d0105010601110006021d020d010f010d0006011e010601060103002101060118011a
*010d011d010701630100000001000000010000004300000073040000006400005328010000004e
*28000000002801000000520a0000002800000000280000000073340000006275696c645c626469
*73742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c6275696c645f70
*792e7079740e0000006765745f646174615f66696c65736b00000073000000007303000000322e
*3469010000006302000000080000000800000043000000735a0000007400006901007c00007c01
*00830200670000047d02007c0000690200445d35005c04007d03007d04007d05007d06007c0600
*445d1c007d07007c02007403006904006905007c05007c070083020012713300711d007e020017
*532801000000736a01000052657475726e20636f6d706c657465206c697374206f662066696c65
*7320636f7069656420746f20746865206275696c64206469726563746f72790a0a202020202020
*2020202020205468697320696e636c7564657320626f746820272e7079272066696c657320616e
*6420646174612066696c65732c2061732077656c6c20617320272e707963270a20202020202020
*2020202020616e6420272e70796f272066696c65732069662027696e636c7564655f6279746563
*6f64652720697320747275652e20202854686973206d6574686f642069730a2020202020202020
*202020206e656564656420666f72207468652027696e7374616c6c5f6c69622720636f6d6d616e
*6420746f20646f20697473206a6f622070726f7065726c792c20616e6420746f0a202020202020
*20202020202067656e6572617465206120636f727265637420696e7374616c6c6174696f6e206d
*616e69666573742e290a2020202020202020202020202806000000520400000052120000005203
*000000521b000000521c000000521d0000002808000000520a000000520b000000522800000052
*2400000052250000005226000000522a0000005237000000280000000028000000007334000000
*6275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e
*645c6275696c645f70792e707952120000006e000000730800000000080f010701190163030000
*0007000000090000004300000073fa000000790f007c00006900007c01001953576e1300047401
*006a0a006f0700010101016e020001587402006903007c00007c01007c02008303007d03007c03
*007c00006900007c01003c7c03000c700e00017c00006904006905000c6f0500017c0300530178
*3e007c0000690400690500445d2c007d04007c04007c01006a0200701400017c04006906007c01
*00640100178301006f05000150716f0001716f00577c0300537407007c03006402008302007d05
*006403007c05006908008300006a07006f2700016404006405006b09006c0a007d0600017c0600
*6406007c0100660100168301008201006e0100017c0500690b00830000017c0300532807000000
*7338000000436865636b206e616d657370616365207061636b6167657327205f5f696e69745f5f
*20666f72206465636c6172655f6e616d6573706163655218000000740200000072557411000000
*6465636c6172655f6e616d65737061636569ffffffff2801000000740e00000044697374757469
*6c734572726f7273c00000004e616d657370616365207061636b6167652070726f626c656d3a20
*25732069732061206e616d657370616365207061636b6167652c20627574206974730a5f5f696e
*69745f5f2e707920646f6573206e6f742063616c6c206465636c6172655f6e616d657370616365
*28292120506c65617365206669782069742e0a2853656520746865207365747570746f6f6c7320
*6d616e75616c20756e64657220224e616d657370616365205061636b616765732220666f722064
*657461696c732e290a280c00000074100000007061636b616765735f636865636b656474080000
*004b65794572726f725204000000740d000000636865636b5f7061636b61676552060000007412
*0000006e616d6573706163655f7061636b61676573740a00000073746172747377697468740400
*00006f70656e7404000000726561647410000000646973747574696c732e6572726f7273524c00
*00007405000000636c6f73652807000000520a0000005224000000740b0000007061636b616765
*5f6469727407000000696e69745f70797403000000706b675245000000524c0000002800000000
*280000000073340000006275696c645c62646973742e77696e33325c6567675c7365747570746f
*6f6c735c636f6d6d616e645c6275696c645f70792e7079524f0000007c000000732a0000000002
*03010f010e01050215010d02160105020d0006012101090204020f01130110010301030311020a
*016301000000010000000200000043000000731a0000006800007c00005f00007401006902007c
*0000830100016400005328010000004e2803000000524d00000052040000007412000000696e69
*7469616c697a655f6f7074696f6e732801000000520a0000002800000000280000000073340000
*006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d61
*6e645c6275696c645f70792e707952590000009b00000073040000000001090163040000000a00
*0000080000004300000073d20000007c00006900006901006401006700008302007c0000690000
*6901007c0100670000830200177d04006700007d0500783c007c0400445d34007d06007c050069
*02007403006904007c03007405006906006907007c02007408007c060083010083020083020083
*01000171350057740900690a007c05008301007d05006800007d0700670000047d08007c030044
*5d3e007d09007c09007c05006a07006f2b00017c09007c07006a07006f1e00017c0700690b007c
*09006402008302006f0b00017c08007c090012718d0001718d007e080053280300000073360000
*0046696c7465722066696c656e616d657320666f72207061636b61676527732064617461206669
*6c657320696e20277372635f64697227522b0000006901000000280c0000005208000000522c00
*0000522e0000007407000000666e6d61746368740600000066696c746572521b000000521c0000
*00521d0000005201000000740400000064696374740800000066726f6d6b657973524000000028
*0a000000520a000000522400000052250000005217000000523000000074030000006261645231
*00000074040000007365656e522800000052450000002800000000280000000073340000006275
*696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c
*6275696c645f70792e7079522f000000a500000073180000000002120116010601070006010601
*060126030f0106021e01281100000074080000005f5f6e616d655f5f740a0000005f5f6d6f6475
*6c655f5f74070000005f5f646f635f5f5205000000521300000052150000005214000000522100
*00005210000000521900000052490000007403000000737973740700000076657273696f6e5212
*000000524f0000005259000000522f000000280000000028000000002800000000733400000062
*75696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e64
*5c6275696c645f70792e7079520000000006000000731c00000006080601090609100905091509
*0a090a091809021001100e091f090a6301000000020000000400000043000000733c0000007400
*006901006902007c0000830100700500017c000053016401006402006b03006c04007d0100017c
*01006403007c0000168301008201006400005328040000004e69ffffffff280100000074130000
*00446973747574696c7353657475704572726f7273aa0000004572726f723a2073657475702073
*63726970742073706563696669657320616e206162736f6c75746520706174683a0a0a20202020
*25730a0a7365747570282920617267756d656e7473206d757374202a616c776179732a20626520
*2f2d7365706172617465642070617468732072656c617469766520746f207468650a7365747570
*2e7079206469726563746f72792c202a6e657665722a206162736f6c7574652070617468732e0a
*2805000000521b000000521c000000740500000069736162735254000000526500000028020000
*00521c00000052650000002800000000280000000073340000006275696c645c62646973742e77
*696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c6275696c645f70792e7079
*523b000000b8000000730a00000000011301050110010307280b00000074070000006f732e7061
*7468521b0000005263000000525a000000741a000000646973747574696c732e636f6d6d616e64
*2e6275696c645f707952000000005204000000740e000000646973747574696c732e7574696c52
*010000005202000000523b00000028000000002800000000280000000073340000006275696c64
*5c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c627569
*6c645f70792e707974080000003c6d6f64756c653e01000000730a000000240110011001100216
*b2
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/develop.py
hunk ./setuptools-0.6c14devdev.egg/setuptools/command/develop.py 1
+from setuptools.command.easy_install import easy_install
+from distutils.util import convert_path
+from pkg_resources import Distribution, PathMetadata, normalize_path
+from distutils import log
+from distutils.errors import *
+import sys, os, setuptools, glob
+
+class develop(easy_install):
+    """Set up package for development"""
+
+    description = "install package in 'development mode'"
+
+    user_options = easy_install.user_options + [
+        ("uninstall", "u", "Uninstall this source package"),
+        ("egg-path=", None, "Set the path to be used in the .egg-link file"),
+    ]
+
+    boolean_options = easy_install.boolean_options + ['uninstall']
+
+    command_consumes_arguments = False  # override base
+
+    def run(self):
+        if self.uninstall:
+            self.multi_version = True
+            self.uninstall_link()
+        else:
+            self.install_for_development()
+        self.warn_deprecated_options()
+
+    def initialize_options(self):
+        self.uninstall = None
+        self.egg_path = None
+        easy_install.initialize_options(self)
+        self.setup_path = None
+        self.always_copy_from = '.'   # always copy eggs installed in curdir
+
+
+
+
+
+
+    def finalize_options(self):
+        ei = self.get_finalized_command("egg_info")
+        if ei.broken_egg_info:
+            raise DistutilsError(
+            "Please rename %r to %r before using 'develop'"
+            % (ei.egg_info, ei.broken_egg_info)
+            )
+        self.args = [ei.egg_name]
+        easy_install.finalize_options(self)
+        # pick up setup-dir .egg files only: no .egg-info
+        self.package_index.scan(glob.glob('*.egg'))
+
+        self.egg_link = os.path.join(self.install_dir, ei.egg_name+'.egg-link')
+        self.egg_base = ei.egg_base
+        if self.egg_path is None:
+            self.egg_path = os.path.abspath(ei.egg_base)
+
+        target = normalize_path(self.egg_base)
+        if normalize_path(os.path.join(self.install_dir, self.egg_path)) != target:
+            raise DistutilsOptionError(
+                "--egg-path must be a relative path from the install"
+                " directory to "+target
+        )
+        
+        # Make a distribution for the package's source
+        self.dist = Distribution(
+            target,
+            PathMetadata(target, os.path.abspath(ei.egg_info)),
+            project_name = ei.egg_name
+        )
+
+        p = self.egg_base.replace(os.sep,'/')
+        if p!= os.curdir:
+            p = '../' * (p.count('/')+1)
+        self.setup_path = p
+        p = normalize_path(os.path.join(self.install_dir, self.egg_path, p))
+        if  p != normalize_path(os.curdir):
+            raise DistutilsOptionError(
+                "Can't get a consistent path to setup script from"
+                " installation directory", p, normalize_path(os.curdir))
+
+    def install_for_development(self):
+        # Ensure metadata is up-to-date
+        self.run_command('egg_info')
+        # Build extensions in-place
+        self.reinitialize_command('build_ext', inplace=1)
+        self.run_command('build_ext')
+        self.install_site_py()  # ensure that target dir is site-safe
+        if setuptools.bootstrap_install_from:
+            self.easy_install(setuptools.bootstrap_install_from)
+            setuptools.bootstrap_install_from = None
+
+        # create an .egg-link in the installation dir, pointing to our egg
+        log.info("Creating %s (link to %s)", self.egg_link, self.egg_base)
+        if not self.dry_run:
+            f = open(self.egg_link,"w")
+            f.write(self.egg_path + "\n" + self.setup_path)
+            f.close()
+        # postprocess the installed distro, fixing up .pth, installing scripts,
+        # and handling requirements
+        self.process_distribution(None, self.dist, not self.no_deps)
+
+
+    def uninstall_link(self):
+        if os.path.exists(self.egg_link):
+            log.info("Removing %s (link to %s)", self.egg_link, self.egg_base)
+            contents = [line.rstrip() for line in file(self.egg_link)]
+            if contents not in ([self.egg_path], [self.egg_path, self.setup_path]):
+                log.warn("Link points to %s: uninstall aborted", contents)
+                return
+            if not self.dry_run:
+                os.unlink(self.egg_link)
+        if not self.dry_run:
+            self.update_pth(self.dist)  # remove any .pth link to us
+        if self.distribution.scripts:
+            # XXX should also check for entry point scripts!
+            log.warn("Note: you must uninstall or replace scripts manually!")
+
+
+
+
+
+    def install_egg_scripts(self, dist):
+        if dist is not self.dist:
+            # Installing a dependency, so fall back to normal behavior
+            return easy_install.install_egg_scripts(self,dist)
+
+        # create wrapper scripts in the script dir, pointing to dist.scripts
+
+        # new-style...
+        self.install_wrapper_scripts(dist)
+
+        # ...and old-style
+        for script_name in self.distribution.scripts or []:
+            script_path = os.path.abspath(convert_path(script_name))
+            script_name = os.path.basename(script_path)
+            f = open(script_path,'rU')
+            script_text = f.read()
+            f.close()
+            self.install_script(dist, script_name, script_text, script_path)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/develop.pyc
binary ./setuptools-0.6c14devdev.egg/setuptools/command/develop.pyc
oldhex
*
newhex
*d1f20d0a3e1ef84b6300000000000000000c0000004000000073a00000006400006401006b0000
*6c01005a0100016400006402006b02006c03005a0300016400006403006b04006c05005a05006c
*06005a06006c07005a0700016400006404006b08006c09005a0900016400006405006b0a005464
*00006406006b0b005a0b006400006406006b0c005a0c006400006406006b0d005a0d0064000064
*06006b0e005a0e00640700650100660100640800840000830000595a0f00640600532809000000
*69ffffffff2801000000740c000000656173795f696e7374616c6c2801000000740c000000636f
*6e766572745f706174682803000000740c000000446973747269627574696f6e740c0000005061
*74684d65746164617461740e0000006e6f726d616c697a655f7061746828010000007403000000
*6c6f67280100000074010000002a4e7407000000646576656c6f70630000000000000000050000
*004200000073730000006500005a01006400005a02006401005a0300650400690500640d00640f
*00670200175a0500650400690700640200670100175a07006508005a09006407008400005a0a00
*6408008400005a0b006409008400005a0c00640a008400005a0d00640b008400005a0e00640c00
*8400005a0f0052532810000000731e000000536574207570207061636b61676520666f72206465
*76656c6f706d656e747325000000696e7374616c6c207061636b61676520696e2027646576656c
*6f706d656e74206d6f6465277409000000756e696e7374616c6c740100000075731d000000556e
*696e7374616c6c207468697320736f75726365207061636b61676573090000006567672d706174
*683d732d00000053657420746865207061746820746f206265207573656420696e20746865202e
*6567672d6c696e6b2066696c65630100000001000000020000004300000073390000007c000069
*00006f1700017401007c00005f02007c0000690300830000016e0b00017c000069040083000001
*7c0000690500830000016400005328010000004e28060000005208000000740400000054727565
*740d0000006d756c74695f76657273696f6e740e000000756e696e7374616c6c5f6c696e6b7417
*000000696e7374616c6c5f666f725f646576656c6f706d656e7474170000007761726e5f646570
*726563617465645f6f7074696f6e732801000000740400000073656c6628000000002800000000
*7347000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36633134646576
*6465762e6567675c7365747570746f6f6c735c636f6d6d616e645c646576656c6f702e70797403
*00000072756e16000000730a00000000010a0109010e020a016301000000010000000200000043
*00000073350000006400007c00005f01006400007c00005f02007403006904007c000083010001
*6400007c00005f05006401007c00005f06006400005328020000004e74010000002e2807000000
*74040000004e6f6e65520800000074080000006567675f7061746852000000007412000000696e
*697469616c697a655f6f7074696f6e73740a00000073657475705f706174687410000000616c77
*6179735f636f70795f66726f6d2801000000520f00000028000000002800000000734700000043
*3a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567
*675c7365747570746f6f6c735c636f6d6d616e645c646576656c6f702e707952140000001e0000
*00730a0000000001090109010d010901630100000004000000060000004300000073ef0100007c
*00006900006401008301007d01007c01006901006f2000017402006402007c01006903007c0100
*690100660200168301008201006e0100017c01006904006701007c00005f05007406006907007c
*0000830100017c0000690800690900740a00690a0064030083010083010001740b00690c00690d
*007c0000690e007c0100690400640400178302007c00005f0f007c01006910007c00005f10007c
*00006911006400006a08006f1c0001740b00690c006913007c01006910008301007c00005f1100
*6e0100017414007c00006910008301007d0200741400740b00690c00690d007c0000690e007c00
*006911008302008301007c02006a03006f1400017415006405007c0200178301008201006e0100
*017416007c02007417007c0200740b00690c006913007c01006903008301008302006406007c01
*006904008302017c00005f18007c0000691000691900740b00691a006407008302007d03007c03
*00740b00691b006a03006f1b00016408007c0300691c0064070083010064090017147d03006e01
*00017c03007c00005f1d00741400740b00690c00690d007c0000690e007c00006911007c030083
*03008301007d03007c0300741400740b00691b008301006a03006f1f0001741500640a007c0300
*741400740b00691b008301008303008201006e01000164000053280b0000004e74080000006567
*675f696e666f732d000000506c656173652072656e616d6520257220746f202572206265666f72
*65207573696e672027646576656c6f702773050000002a2e65676773090000002e6567672d6c69
*6e6b73410000002d2d6567672d70617468206d75737420626520612072656c6174697665207061
*74682066726f6d2074686520696e7374616c6c206469726563746f727920746f20740c00000070
*726f6a6563745f6e616d6574010000002f73030000002e2e2f6901000000734700000043616e27
*7420676574206120636f6e73697374656e74207061746820746f20736574757020736372697074
*2066726f6d20696e7374616c6c6174696f6e206469726563746f7279281e000000741500000067
*65745f66696e616c697a65645f636f6d6d616e64740f00000062726f6b656e5f6567675f696e66
*6f740e000000446973747574696c734572726f72521700000074080000006567675f6e616d6574
*04000000617267735200000000741000000066696e616c697a655f6f7074696f6e73740d000000
*7061636b6167655f696e64657874040000007363616e7404000000676c6f6274020000006f7374
*040000007061746874040000006a6f696e740b000000696e7374616c6c5f646972740800000065
*67675f6c696e6b74080000006567675f6261736552130000005212000000740700000061627370
*61746852040000007414000000446973747574696c734f7074696f6e4572726f72520200000052
*0300000074040000006469737474070000007265706c6163657403000000736570740600000063
*75726469727405000000636f756e7452150000002804000000520f000000740200000065697406
*000000746172676574740100000070280000000028000000007347000000433a5c7461686f652d
*6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c736574757074
*6f6f6c735c636f6d6d616e645c646576656c6f702e7079521f0000002a000000733c0000000001
*0f010a01030103011a020f010d02190222010c0110011c020f012801030103010e04030103011e
*010f03180110011b0109012401160103010301630100000002000000040000004300000073da00
*00007c0000690000640100830100017c0000690100640200640300640400830101017c00006900
*00640200830100017c0000690200830000017403006904006f1d00017c00006905007403006904
*00830100016400007403005f04006e0100017407006908006405007c00006909007c0000690a00
*830300017c0000690b00703b0001740c007c00006909006406008302007d01007c0100690d007c
*0000690e00640700177c0000690f0017830100017c0100691000830000016e0100017c00006911
*006400007c00006912007c00006913000c830300016400005328080000004e5217000000740900
*00006275696c645f6578747407000000696e706c61636569010000007318000000437265617469
*6e6720257320286c696e6b20746f2025732974010000007773010000000a2814000000740b0000
*0072756e5f636f6d6d616e6474140000007265696e697469616c697a655f636f6d6d616e64740f
*000000696e7374616c6c5f736974655f7079740a0000007365747570746f6f6c73741600000062
*6f6f7473747261705f696e7374616c6c5f66726f6d520000000052120000005205000000740400
*0000696e666f5227000000522800000074070000006472795f72756e74040000006f70656e7405
*0000007772697465521300000052150000007405000000636c6f7365741400000070726f636573
*735f646973747269627574696f6e522b00000074070000006e6f5f646570732802000000520f00
*0000740100000066280000000028000000007347000000433a5c7461686f652d6c6166735c7365
*747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f
*6d6d616e645c646576656c6f702e7079520d00000053000000731a00000000020d0213010d010a
*010a0110010d0319010a0112011b010e03630100000004000000060000004300000073fb000000
*7400006901006902007c00006903008301006fa500017404006905006401007c00006903007c00
*0069060083030001670000047d01007407007c0000690300830100445d13007d02007c01007c02
*00690800830000127143007e01007d03007c03007c00006909006701007c00006909007c000069
*0a006702006602006a07006f150001740400690b006402007c03008302000164000053017c0000
*690c0070140001740000690d007c00006903008301000171bb00016e0100017c0000690c007014
*00017c0000690e007c0000690f00830100016e0100017c00006910006911006f11000174040069
*0b00640300830100016e0100016400005328040000004e731800000052656d6f76696e67202573
*20286c696e6b20746f2025732973240000004c696e6b20706f696e747320746f2025733a20756e
*696e7374616c6c2061626f7274656473350000004e6f74653a20796f75206d75737420756e696e
*7374616c6c206f72207265706c6163652073637269707473206d616e75616c6c79212812000000
*52230000005224000000740600000065786973747352270000005205000000523b000000522800
*0000740400000066696c6574060000007273747269705213000000521500000074040000007761
*726e523c0000007406000000756e6c696e6b740a0000007570646174655f707468522b00000074
*0c000000646973747269627574696f6e7407000000736372697074732804000000520f00000074
*040000005f5b315d74040000006c696e657408000000636f6e74656e7473280000000028000000
*007347000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465
*766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c646576656c6f702e707952
*0c00000069000000731800000000011601190130012501100105010a0118010a0114010d026302
*00000006000000060000004300000073b50000007c01007c00006900006a09006f110001740100
*6902007c00007c010083020053017c00006903007c0100830100017880007c0000690400690500
*70040001670000445d6b007d02007406006907006908007409007c02008301008301007d030074
*0600690700690a007c03008301007d0200740b007c03006401008302007d04007c0400690c0083
*00007d05007c0400690d00830000017c0000690e007c01007c02007c05007c0300830400017142
*00576400005328020000004e74020000007255280f000000522b00000052000000007413000000
*696e7374616c6c5f6567675f736372697074737417000000696e7374616c6c5f77726170706572
*5f736372697074735249000000524a000000522300000052240000005229000000520100000074
*08000000626173656e616d65523d000000740400000072656164523f000000740e000000696e73
*74616c6c5f7363726970742806000000520f000000522b000000740b0000007363726970745f6e
*616d65740b0000007363726970745f706174685242000000740b0000007363726970745f746578
*74280000000028000000007347000000433a5c7461686f652d6c6166735c7365747570746f6f6c
*732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c64
*6576656c6f702e7079524f0000007c00000073160000000001100211050d031400060118011201
*0f010c010a0128030000007309000000756e696e7374616c6c5209000000731d000000556e696e
*7374616c6c207468697320736f75726365207061636b6167654e28030000007309000000656767
*2d706174683d4e732d00000053657420746865207061746820746f206265207573656420696e20
*746865202e6567672d6c696e6b2066696c65281000000074080000005f5f6e616d655f5f740a00
*00005f5f6d6f64756c655f5f74070000005f5f646f635f5f740b0000006465736372697074696f
*6e5200000000740c000000757365725f6f7074696f6e735212000000740f000000626f6f6c6561
*6e5f6f7074696f6e73740500000046616c7365741a000000636f6d6d616e645f636f6e73756d65
*735f617267756d656e747352100000005214000000521f000000520d000000520c000000524f00
*00002800000000280000000028000000007347000000433a5c7461686f652d6c6166735c736574
*7570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d
*6d616e645c646576656c6f702e7079520700000008000000731a00000006010602060206010301
*0a03100206020908090c0929091609132810000000741f0000007365747570746f6f6c732e636f
*6d6d616e642e656173795f696e7374616c6c5200000000740e000000646973747574696c732e75
*74696c5201000000740d000000706b675f7265736f757263657352020000005203000000520400
*00007409000000646973747574696c7352050000007410000000646973747574696c732e657272
*6f7273740300000073797352230000005239000000522200000052070000002800000000280000
*000028000000007347000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e
*366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c646576656c
*6f702e707974080000003c6d6f64756c653e01000000730c000000100110011c0110010a013002
*
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/easy_install.py
hunk ./setuptools-0.6c14devdev.egg/setuptools/command/easy_install.py 1
+#!python
+"""\
+Easy Install
+------------
+
+A tool for doing automatic download/extract/build of distutils-based Python
+packages.  For detailed documentation, see the accompanying EasyInstall.txt
+file, or visit the `EasyInstall home page`__.
+
+__ http://peak.telecommunity.com/DevCenter/EasyInstall
+"""
+import sys, os.path, zipimport, shutil, tempfile, zipfile, re, stat, random
+from glob import glob
+from setuptools import Command
+from setuptools.sandbox import run_setup
+from distutils import log, dir_util
+from distutils.sysconfig import get_python_lib
+from distutils.errors import DistutilsArgError, DistutilsOptionError, \
+    DistutilsError
+from setuptools.archive_util import unpack_archive
+from setuptools.package_index import PackageIndex, parse_bdist_wininst
+from setuptools.package_index import URL_SCHEME
+from setuptools.command import bdist_egg, egg_info
+from pkg_resources import *
+sys_executable = os.path.normpath(sys.executable)
+
+__all__ = [
+    'samefile', 'easy_install', 'PthDistributions', 'extract_wininst_cfg',
+    'main', 'get_exe_prefixes',
+]
+
+def samefile(p1,p2):
+    if hasattr(os.path,'samefile') and (
+        os.path.exists(p1) and os.path.exists(p2)
+    ):
+        return os.path.samefile(p1,p2)
+    return (
+        os.path.normpath(os.path.normcase(p1)) ==
+        os.path.normpath(os.path.normcase(p2))
+    )
+
+class easy_install(Command):
+    """Manage a download/build/install process"""
+    description = "Find/get/install Python packages"
+    command_consumes_arguments = True
+
+    user_options = [
+        ('prefix=', None, "installation prefix"),
+        ("zip-ok", "z", "install package as a zipfile"),
+        ("multi-version", "m", "make apps have to require() a version"),
+        ("upgrade", "U", "force upgrade (searches PyPI for latest versions)"),
+        ("install-dir=", "d", "install package to DIR"),
+        ("script-dir=", "s", "install scripts to DIR"),
+        ("exclude-scripts", "x", "Don't install scripts"),
+        ("always-copy", "a", "Copy all needed packages to install dir"),
+        ("index-url=", "i", "base URL of Python Package Index"),
+        ("find-links=", "f", "additional URL(s) to search for packages"),
+        ("delete-conflicting", "D", "no longer needed; don't use this"),
+        ("ignore-conflicts-at-my-risk", None,
+            "no longer needed; don't use this"),
+        ("build-directory=", "b",
+            "download/extract/build in DIR; keep the results"),
+        ('optimize=', 'O',
+         "also compile with optimization: -O1 for \"python -O\", "
+         "-O2 for \"python -OO\", and -O0 to disable [default: -O0]"),
+        ('record=', None,
+         "filename in which to record list of installed files"),
+        ('always-unzip', 'Z', "don't install as a zipfile, no matter what"),
+        ('site-dirs=','S',"list of directories where .pth files work"),
+        ('editable', 'e', "Install specified packages in editable form"),
+        ('no-deps', 'N', "don't install dependencies"),
+        ('allow-hosts=', 'H', "pattern(s) that hostnames must match"),
+        ('local-snapshots-ok', 'l', "allow building eggs from local checkouts"),
+    ]
+    boolean_options = [
+        'zip-ok', 'multi-version', 'exclude-scripts', 'upgrade', 'always-copy',
+        'delete-conflicting', 'ignore-conflicts-at-my-risk', 'editable',
+        'no-deps', 'local-snapshots-ok',
+    ]
+    negative_opt = {'always-unzip': 'zip-ok'}
+    create_index = PackageIndex
+
+    def initialize_options(self):
+        self.zip_ok = self.local_snapshots_ok = None
+        self.install_dir = self.script_dir = self.exclude_scripts = None
+        self.index_url = None
+        self.find_links = None
+        self.build_directory = None
+        self.args = None
+        self.optimize = self.record = None
+        self.upgrade = self.always_copy = self.multi_version = None
+        self.editable = self.no_deps = self.allow_hosts = None
+        self.root = self.prefix = self.no_report = None
+
+        # Options not specifiable via command line
+        self.package_index = None
+        self.pth_file = self.always_copy_from = None
+        self.delete_conflicting = None
+        self.ignore_conflicts_at_my_risk = None
+        self.site_dirs = None
+        self.installed_projects = {}
+        self.sitepy_installed = False
+        # Always read easy_install options, even if we are subclassed, or have
+        # an independent instance created.  This ensures that defaults will
+        # always come from the standard configuration file(s)' "easy_install"
+        # section, even if this is a "develop" or "install" command, or some
+        # other embedding.
+        self._dry_run = None
+        self.verbose = self.distribution.verbose
+        self.distribution._set_command_options(
+            self, self.distribution.get_option_dict('easy_install')
+        )
+
+    def delete_blockers(self, blockers):
+        for filename in blockers:
+            if os.path.exists(filename) or os.path.islink(filename):
+                log.info("Deleting %s", filename)
+                if not self.dry_run:
+                    if os.path.isdir(filename) and not os.path.islink(filename):
+                        rmtree(filename)
+                    else:
+                        os.unlink(filename)
+
+    def finalize_options(self):
+        self._expand('install_dir','script_dir','build_directory','site_dirs')
+        # If a non-default installation directory was specified, default the
+        # script directory to match it.
+        if self.script_dir is None:
+            self.script_dir = self.install_dir
+
+        # Let install_dir get set by install_lib command, which in turn
+        # gets its info from the install command, and takes into account
+        # --prefix and --home and all that other crud.
+        self.set_undefined_options('install_lib',
+            ('install_dir','install_dir')
+        )
+        # Likewise, set default script_dir from 'install_scripts.install_dir'
+        self.set_undefined_options('install_scripts',
+            ('install_dir', 'script_dir')
+        )
+        # default --record from the install command
+        self.set_undefined_options('install', ('record', 'record'))
+        normpath = map(normalize_path, sys.path)
+        self.all_site_dirs = get_site_dirs()
+        if self.site_dirs is not None:
+            site_dirs = [
+                os.path.expanduser(s.strip()) for s in self.site_dirs.split(',')
+            ]
+            for d in site_dirs:
+                if not os.path.isdir(d):
+                    log.warn("%s (in --site-dirs) does not exist", d)
+                elif normalize_path(d) not in normpath:
+                    raise DistutilsOptionError(
+                        d+" (in --site-dirs) is not on sys.path"
+                    )
+                else:
+                    self.all_site_dirs.append(normalize_path(d))
+        if not self.editable: self.check_site_dir()
+        self.index_url = self.index_url or "http://pypi.python.org/simple"
+        self.shadow_path = self.all_site_dirs[:]
+        for path_item in self.install_dir, normalize_path(self.script_dir):
+            if path_item not in self.shadow_path:
+                self.shadow_path.insert(0, path_item)
+
+        if self.allow_hosts is not None:
+            hosts = [s.strip() for s in self.allow_hosts.split(',')]
+        else:
+            hosts = ['*']
+        if self.package_index is None:
+            self.package_index = self.create_index(
+                self.index_url, search_path = self.shadow_path+sys.path, hosts=hosts,
+            )
+        self.local_index = Environment(self.shadow_path+sys.path)
+
+        if self.find_links is not None:
+            if isinstance(self.find_links, basestring):
+                self.find_links = self.find_links.split()
+        else:
+            self.find_links = []
+        if self.local_snapshots_ok:
+            self.package_index.scan_egg_links(self.shadow_path+sys.path)
+        self.package_index.add_find_links(self.find_links)
+        self.set_undefined_options('install_lib', ('optimize','optimize'))
+        if not isinstance(self.optimize,int):
+            try:
+                self.optimize = int(self.optimize)
+                if not (0 <= self.optimize <= 2): raise ValueError
+            except ValueError:
+                raise DistutilsOptionError("--optimize must be 0, 1, or 2")
+
+        if self.delete_conflicting and self.ignore_conflicts_at_my_risk:
+            raise DistutilsOptionError(
+                "Can't use both --delete-conflicting and "
+                "--ignore-conflicts-at-my-risk at the same time"
+            )
+        if self.editable and not self.build_directory:
+            raise DistutilsArgError(
+                "Must specify a build directory (-b) when using --editable"
+            )
+        if not self.args:
+            raise DistutilsArgError(
+                "No urls, filenames, or requirements specified (see --help)")
+
+        self.outputs = []
+
+    def run(self):
+        if self.verbose<>self.distribution.verbose:
+            log.set_verbosity(self.verbose)
+        try:
+            for spec in self.args:
+                self.easy_install(spec, not self.no_deps)
+            if self.record:
+                outputs = self.outputs
+                if self.root:               # strip any package prefix
+                    root_len = len(self.root)
+                    for counter in xrange(len(outputs)):
+                        outputs[counter] = outputs[counter][root_len:]
+                from distutils import file_util
+                self.execute(
+                    file_util.write_file, (self.record, outputs),
+                    "writing list of installed files to '%s'" %
+                    self.record
+                )
+            self.warn_deprecated_options()
+        finally:
+            log.set_verbosity(self.distribution.verbose)
+
+    def pseudo_tempname(self):
+        """Return a pseudo-tempname base in the install directory.
+        This code is intentionally naive; if a malicious party can write to
+        the target directory you're already in deep doodoo.
+        """
+        try:
+            pid = os.getpid()
+        except:
+            pid = random.randint(0,sys.maxint)
+        return os.path.join(self.install_dir, "test-easy-install-%s" % pid)
+
+    def warn_deprecated_options(self):
+        if self.delete_conflicting or self.ignore_conflicts_at_my_risk:
+            log.warn(
+                "Note: The -D, --delete-conflicting and"
+                " --ignore-conflicts-at-my-risk no longer have any purpose"
+                " and should not be used."
+            )
+
+    def check_site_dir(self):
+        """Verify that self.install_dir is .pth-capable dir, if needed"""
+        instdir = normalize_path(self.install_dir)
+        pth_file = os.path.join(instdir,'easy-install.pth')
+
+        # mkdir it if necessary
+        try:
+            os.makedirs(instdir)
+        except OSError:
+            # Oh well -- hopefully this error simply means that it is already there.
+            # If not the subsequent write test will identify the problem.
+            pass
+        # add it to site dirs
+        self.all_site_dirs.append(instdir)
+
+        # Is it a configured, PYTHONPATH, implicit, or explicit site dir?
+        is_site_dir = instdir in self.all_site_dirs
+
+        if not is_site_dir:
+            # No?  Then directly test whether it does .pth file processing
+            is_site_dir = self.check_pth_processing()
+        else:
+            # make sure we can write to target dir
+            testfile = self.pseudo_tempname()+'.write-test'
+            test_exists = os.path.exists(testfile)
+            try:
+                if test_exists: os.unlink(testfile)
+                open(testfile,'w').close()
+                os.unlink(testfile)
+            except (OSError,IOError):
+                self.cant_write_to_target()
+
+        if not is_site_dir and not self.multi_version:
+            # Can't install non-multi to non-site dir
+            log.warn(self.no_default_version_msg())
+
+        if is_site_dir:
+            if self.pth_file is None:
+                self.pth_file = PthDistributions(pth_file, self.all_site_dirs)
+        else:
+            self.pth_file = None
+
+        if self.multi_version and not os.path.exists(pth_file):
+            self.sitepy_installed = True    # don't need site.py in this case
+            self.pth_file = None            # and don't create a .pth file
+        self.install_dir = instdir
+
+    def cant_write_to_target(self):
+        msg = """can't create or remove files in install directory
+
+The following error occurred while trying to add or remove files in the
+installation directory:
+
+    %s
+
+The installation directory you specified (via --install-dir, --prefix, or
+the distutils default setting) was:
+
+    %s
+"""     % (sys.exc_info()[1], self.install_dir,)
+
+        if not os.path.exists(self.install_dir):
+            msg += """
+This directory does not currently exist.  Please create it and try again, or
+choose a different installation directory (using the -d or --install-dir
+option).
+"""
+        else:
+            msg += """
+Perhaps your account does not have write access to this directory?  If the
+installation directory is a system-owned directory, you may need to sign in
+as the administrator or "root" account.  If you do not have administrative
+access to this machine, you may wish to choose a different installation
+directory, preferably one that is listed in your PYTHONPATH environment
+variable.
+
+For information on other options, you may wish to consult the
+documentation at:
+
+  http://peak.telecommunity.com/EasyInstall.html
+
+Please make the appropriate changes for your system and try again.
+"""
+        raise DistutilsError(msg)
+
+
+
+
+    def check_pth_processing(self):
+        """Empirically verify whether .pth files are supported in inst. dir"""
+        instdir = self.install_dir
+        log.info("Checking .pth file support in %s", instdir)
+        pth_file = self.pseudo_tempname()+".pth"
+        ok_file = pth_file+'.ok'
+        ok_exists = os.path.exists(ok_file)
+        try:
+            if ok_exists: os.unlink(ok_file)
+            f = open(pth_file,'w')
+        except (OSError,IOError):
+            self.cant_write_to_target()
+        else:
+            try:
+                f.write("import os;open(%r,'w').write('OK')\n" % (ok_file,))
+                f.close(); f=None
+                executable = sys.executable
+                if os.name=='nt':
+                    dirname,basename = os.path.split(executable)
+                    alt = os.path.join(dirname,'pythonw.exe')
+                    if basename.lower()=='python.exe' and os.path.exists(alt):
+                        # use pythonw.exe to avoid opening a console window
+                        executable = alt
+
+                from distutils.spawn import spawn
+                spawn([executable,'-E','-c','pass'],0)
+
+                if os.path.exists(ok_file):
+                    log.info(
+                        "TEST PASSED: %s appears to support .pth files",
+                        instdir
+                    )
+                    return True
+            finally:
+                if f: f.close()
+                if os.path.exists(ok_file): os.unlink(ok_file)
+                if os.path.exists(pth_file): os.unlink(pth_file)
+        if not self.multi_version:
+            log.warn("TEST FAILED: %s does NOT support .pth files", instdir)
+        return False
+
+    def install_egg_scripts(self, dist):
+        """Write all the scripts for `dist`, unless scripts are excluded"""
+        if not self.exclude_scripts and dist.metadata_isdir('scripts'):
+            for script_name in dist.metadata_listdir('scripts'):
+                self.install_script(
+                    dist, script_name,
+                    dist.get_metadata('scripts/'+script_name)
+                )
+        self.install_wrapper_scripts(dist)
+
+    def add_output(self, path):
+        if os.path.isdir(path):
+            for base, dirs, files in os.walk(path):
+                for filename in files:
+                    self.outputs.append(os.path.join(base,filename))
+        else:
+            self.outputs.append(path)
+
+    def not_editable(self, spec):
+        if self.editable:
+            raise DistutilsArgError(
+                "Invalid argument %r: you can't use filenames or URLs "
+                "with --editable (except via the --find-links option)."
+                % (spec,)
+            )
+
+    def check_editable(self,spec):
+        if not self.editable:
+            return
+
+        if os.path.exists(os.path.join(self.build_directory, spec.key)):
+            raise DistutilsArgError(
+                "%r already exists in %s; can't do a checkout there" %
+                (spec.key, self.build_directory)
+            )
+
+
+
+
+
+
+    def easy_install(self, spec, deps=False):
+        tmpdir = tempfile.mkdtemp(prefix="easy_install-")
+        download = None
+        if not self.editable: self.install_site_py()
+
+        try:
+            if not isinstance(spec,Requirement):
+                if URL_SCHEME(spec):
+                    # It's a url, download it to tmpdir and process
+                    self.not_editable(spec)
+                    download = self.package_index.download(spec, tmpdir)
+                    return self.install_item(None, download, tmpdir, deps, True)
+
+                elif os.path.exists(spec):
+                    # Existing file or directory, just process it directly
+                    self.not_editable(spec)
+                    return self.install_item(None, spec, tmpdir, deps, True)
+                else:
+                    spec = parse_requirement_arg(spec)
+
+            self.check_editable(spec)
+            dist = self.package_index.fetch_distribution(
+                spec, tmpdir, self.upgrade, self.editable, not self.always_copy
+            )
+
+            if dist is None:
+                msg = "Could not find suitable distribution for %r" % spec
+                if self.always_copy:
+                    msg+=" (--always-copy skips system and development eggs)"
+                raise DistutilsError(msg)
+            elif dist.precedence==DEVELOP_DIST:
+                # .egg-info dists don't need installing, just process deps
+                self.process_distribution(spec, dist, deps, "Using")
+                return dist
+            else:
+                return self.install_item(spec, dist.location, tmpdir, deps)
+
+        finally:
+            if os.path.exists(tmpdir):
+                rmtree(tmpdir)
+
+    def install_item(self, spec, download, tmpdir, deps, install_needed=False):
+
+        # Installation is also needed if file in tmpdir or is not an egg
+        install_needed = install_needed or self.always_copy
+        install_needed = install_needed or os.path.dirname(download) == tmpdir
+        install_needed = install_needed or not download.endswith('.egg')
+        install_needed = install_needed or (
+            self.always_copy_from is not None and
+            os.path.dirname(normalize_path(download)) ==
+            normalize_path(self.always_copy_from)
+        )
+
+        if spec and not install_needed:
+            # at this point, we know it's a local .egg, we just don't know if
+            # it's already installed.
+            for dist in self.local_index[spec.project_name]:
+                if dist.location==download:
+                    break
+            else:
+                install_needed = True   # it's not in the local index
+
+        log.info("Processing %s", os.path.basename(download))
+
+        if install_needed:
+            dists = self.install_eggs(spec, download, tmpdir)
+            for dist in dists:
+                self.process_distribution(spec, dist, deps)
+        else:
+            dists = [self.check_conflicts(self.egg_distribution(download))]
+            self.process_distribution(spec, dists[0], deps, "Using")
+
+        if spec is not None:
+            for dist in dists:
+                if dist in spec:
+                    return dist
+
+
+
+
+
+
+    def process_distribution(self, requirement, dist, deps=True, *info):
+        self.update_pth(dist)
+        self.package_index.add(dist)
+        self.local_index.add(dist)
+        self.install_egg_scripts(dist)
+        self.installed_projects[dist.key] = dist
+        log.info(self.installation_report(requirement, dist, *info))
+        if dist.has_metadata('dependency_links.txt'):
+            self.package_index.add_find_links(
+                dist.get_metadata_lines('dependency_links.txt')
+            )
+        if not deps and not self.always_copy:
+            return
+        elif requirement is not None and dist.key != requirement.key:
+            log.warn("Skipping dependencies for %s", dist)
+            return  # XXX this is not the distribution we were looking for
+        elif requirement is None or dist not in requirement:
+            # if we wound up with a different version, resolve what we've got
+            distreq = dist.as_requirement()
+            requirement = requirement or distreq
+            requirement = Requirement(
+                distreq.project_name, distreq.specs, requirement.extras
+            )
+        log.info("Processing dependencies for %s", requirement)
+        try:
+            distros = WorkingSet([]).resolve(
+                [requirement], self.local_index, self.easy_install
+            )
+        except DistributionNotFound, e:
+            raise DistutilsError(
+                "Could not find required distribution %s" % e.args
+            )
+        except VersionConflict, e:
+            raise DistutilsError(
+                "Installed distribution %s conflicts with requirement %s"
+                % e.args
+            )
+        if self.always_copy or self.always_copy_from:
+            # Force all the relevant distros to be copied or activated
+            for dist in distros:
+                if dist.key not in self.installed_projects:
+                    self.easy_install(dist.as_requirement())
+        log.info("Finished processing dependencies for %s", requirement)
+
+    def should_unzip(self, dist):
+        if self.zip_ok is not None:
+            return not self.zip_ok
+        if dist.has_metadata('not-zip-safe'):
+            return True
+        if not dist.has_metadata('zip-safe'):
+            return True
+        return False
+
+    def maybe_move(self, spec, dist_filename, setup_base):
+        dst = os.path.join(self.build_directory, spec.key)
+        if os.path.exists(dst):
+            log.warn(
+               "%r already exists in %s; build directory %s will not be kept",
+               spec.key, self.build_directory, setup_base
+            )
+            return setup_base
+        if os.path.isdir(dist_filename):
+            setup_base = dist_filename
+        else:
+            if os.path.dirname(dist_filename)==setup_base:
+                os.unlink(dist_filename)   # get it out of the tmp dir
+            contents = os.listdir(setup_base)
+            if len(contents)==1:
+                dist_filename = os.path.join(setup_base,contents[0])
+                if os.path.isdir(dist_filename):
+                    # if the only thing there is a directory, move it instead
+                    setup_base = dist_filename
+        ensure_directory(dst); shutil.move(setup_base, dst)
+        return dst
+
+    def install_wrapper_scripts(self, dist):
+        if not self.exclude_scripts:
+            for args in get_script_args(dist):
+                self.write_script(*args)
+
+
+
+    def install_script(self, dist, script_name, script_text, dev_path=None):
+        """Generate a legacy script wrapper and install it"""
+        spec = str(dist.as_requirement())
+        is_script = is_python_script(script_text, script_name)
+
+        if is_script and dev_path:
+            script_text = get_script_header(script_text) + (
+                "# EASY-INSTALL-DEV-SCRIPT: %(spec)r,%(script_name)r\n"
+                "__requires__ = %(spec)r\n"
+                "from pkg_resources import require; require(%(spec)r)\n"
+                "del require\n"
+                "__file__ = %(dev_path)r\n"
+                "execfile(__file__)\n"
+            ) % locals()
+        elif is_script:
+            script_text = get_script_header(script_text) + (
+                "# EASY-INSTALL-SCRIPT: %(spec)r,%(script_name)r\n"
+                "__requires__ = %(spec)r\n"
+                "import pkg_resources\n"
+                "pkg_resources.run_script(%(spec)r, %(script_name)r)\n"
+            ) % locals()
+        self.write_script(script_name, script_text, 'b')
+
+    def write_script(self, script_name, contents, mode="t", blockers=()):
+        """Write an executable file to the scripts directory"""
+        self.delete_blockers(   # clean up old .py/.pyw w/o a script
+            [os.path.join(self.script_dir,x) for x in blockers])
+        log.info("Installing %s script to %s", script_name, self.script_dir)
+        target = os.path.join(self.script_dir, script_name)
+        self.add_output(target)
+
+        if not self.dry_run:
+            ensure_directory(target)
+            f = open(target,"w"+mode)
+            f.write(contents)
+            f.close()
+            chmod(target,0755)
+
+
+
+
+    def install_eggs(self, spec, dist_filename, tmpdir):
+        # .egg dirs or files are already built, so just return them
+        if dist_filename.lower().endswith('.egg'):
+            return [self.install_egg(dist_filename, tmpdir)]
+        elif dist_filename.lower().endswith('.exe'):
+            return [self.install_exe(dist_filename, tmpdir)]
+
+        # Anything else, try to extract and build
+        setup_base = tmpdir
+        if os.path.isfile(dist_filename) and not dist_filename.endswith('.py'):
+            unpack_archive(dist_filename, tmpdir, self.unpack_progress)
+        elif os.path.isdir(dist_filename):
+            setup_base = os.path.abspath(dist_filename)
+
+        if (setup_base.startswith(tmpdir)   # something we downloaded
+            and self.build_directory and spec is not None
+        ):
+            setup_base = self.maybe_move(spec, dist_filename, setup_base)
+
+        # Find the setup.py file
+        setup_script = os.path.join(setup_base, 'setup.py')
+
+        if not os.path.exists(setup_script):
+            setups = glob(os.path.join(setup_base, '*', 'setup.py'))
+            if not setups:
+                raise DistutilsError(
+                    "Couldn't find a setup script in %s" % os.path.abspath(dist_filename)
+                )
+            if len(setups)>1:
+                raise DistutilsError(
+                    "Multiple setup scripts in %s" % os.path.abspath(dist_filename)
+                )
+            setup_script = setups[0]
+
+        # Now run it, and return the result
+        if self.editable:
+            log.info(self.report_editable(spec, setup_script))
+            return []
+        else:
+            return self.build_and_install(setup_script, setup_base)
+
+    def egg_distribution(self, egg_path):
+        if os.path.isdir(egg_path):
+            metadata = PathMetadata(egg_path,os.path.join(egg_path,'EGG-INFO'))
+        else:
+            metadata = EggMetadata(zipimport.zipimporter(egg_path))
+        return Distribution.from_filename(egg_path,metadata=metadata)
+
+    def install_egg(self, egg_path, tmpdir):
+        destination = os.path.join(self.install_dir,os.path.basename(egg_path))
+        destination = os.path.abspath(destination)
+        if not self.dry_run:
+            ensure_directory(destination)
+
+        dist = self.egg_distribution(egg_path)
+        self.check_conflicts(dist)
+        if not samefile(egg_path, destination):
+            if os.path.isdir(destination) and not os.path.islink(destination):
+                dir_util.remove_tree(destination, dry_run=self.dry_run)
+            elif os.path.exists(destination):
+                self.execute(os.unlink,(destination,),"Removing "+destination)
+            uncache_zipdir(destination)
+            if os.path.isdir(egg_path):
+                if egg_path.startswith(tmpdir):
+                    f,m = shutil.move, "Moving"
+                else:
+                    f,m = shutil.copytree, "Copying"
+            elif self.should_unzip(dist):
+                self.mkpath(destination)
+                f,m = self.unpack_and_compile, "Extracting"
+            elif egg_path.startswith(tmpdir):
+                f,m = shutil.move, "Moving"
+            else:
+                f,m = shutil.copy2, "Copying"
+
+            self.execute(f, (egg_path, destination),
+                (m+" %s to %s") %
+                (os.path.basename(egg_path),os.path.dirname(destination)))
+
+        self.add_output(destination)
+        return self.egg_distribution(destination)
+
+    def install_exe(self, dist_filename, tmpdir):
+        # See if it's valid, get data
+        cfg = extract_wininst_cfg(dist_filename)
+        if cfg is None:
+            raise DistutilsError(
+                "%s is not a valid distutils Windows .exe" % dist_filename
+            )
+        # Create a dummy distribution object until we build the real distro
+        dist = Distribution(None,
+            project_name=cfg.get('metadata','name'),
+            version=cfg.get('metadata','version'), platform="win32"
+        )
+
+        # Convert the .exe to an unpacked egg
+        egg_path = dist.location = os.path.join(tmpdir, dist.egg_name()+'.egg')
+        egg_tmp  = egg_path+'.tmp'
+        egg_info = os.path.join(egg_tmp, 'EGG-INFO')
+        pkg_inf = os.path.join(egg_info, 'PKG-INFO')
+        ensure_directory(pkg_inf)   # make sure EGG-INFO dir exists
+        dist._provider = PathMetadata(egg_tmp, egg_info)    # XXX
+        self.exe_to_egg(dist_filename, egg_tmp)
+
+        # Write EGG-INFO/PKG-INFO
+        if not os.path.exists(pkg_inf):
+            f = open(pkg_inf,'w')
+            f.write('Metadata-Version: 1.0\n')
+            for k,v in cfg.items('metadata'):
+                if k<>'target_version':
+                    f.write('%s: %s\n' % (k.replace('_','-').title(), v))
+            f.close()
+        script_dir = os.path.join(egg_info,'scripts')
+        self.delete_blockers(   # delete entry-point scripts to avoid duping
+            [os.path.join(script_dir,args[0]) for args in get_script_args(dist)]
+        )
+        # Build .egg file from tmpdir
+        bdist_egg.make_zipfile(
+            egg_path, egg_tmp, verbose=self.verbose, dry_run=self.dry_run
+        )
+        # install the .egg
+        return self.install_egg(egg_path, tmpdir)
+
+    def exe_to_egg(self, dist_filename, egg_tmp):
+        """Extract a bdist_wininst to the directories an egg would use"""
+        # Check for .pth file and set up prefix translations
+        prefixes = get_exe_prefixes(dist_filename)
+        to_compile = []
+        native_libs = []
+        top_level = {}
+        def process(src,dst):
+            s = src.lower()
+            for old,new in prefixes:
+                if s.startswith(old):
+                    src = new+src[len(old):]
+                    parts = src.split('/')
+                    dst = os.path.join(egg_tmp, *parts)
+                    dl = dst.lower()
+                    if dl.endswith('.pyd') or dl.endswith('.dll'):
+                        parts[-1] = bdist_egg.strip_module(parts[-1])
+                        top_level[os.path.splitext(parts[0])[0]] = 1
+                        native_libs.append(src)
+                    elif dl.endswith('.py') and old!='SCRIPTS/':
+                        top_level[os.path.splitext(parts[0])[0]] = 1
+                        to_compile.append(dst)
+                    return dst
+            if not src.endswith('.pth'):
+                log.warn("WARNING: can't process %s", src)
+            return None
+        # extract, tracking .pyd/.dll->native_libs and .py -> to_compile
+        unpack_archive(dist_filename, egg_tmp, process)
+        stubs = []
+        for res in native_libs:
+            if res.lower().endswith('.pyd'):    # create stubs for .pyd's
+                parts = res.split('/')
+                resource = parts[-1]
+                parts[-1] = bdist_egg.strip_module(parts[-1])+'.py'
+                pyfile = os.path.join(egg_tmp, *parts)
+                to_compile.append(pyfile); stubs.append(pyfile)
+                bdist_egg.write_stub(resource, pyfile)
+        self.byte_compile(to_compile)   # compile .py's
+        bdist_egg.write_safety_flag(os.path.join(egg_tmp,'EGG-INFO'),
+            bdist_egg.analyze_egg(egg_tmp, stubs))  # write zip-safety flag
+
+        for name in 'top_level','native_libs':
+            if locals()[name]:
+                txt = os.path.join(egg_tmp, 'EGG-INFO', name+'.txt')
+                if not os.path.exists(txt):
+                    open(txt,'w').write('\n'.join(locals()[name])+'\n')
+
+    def check_conflicts(self, dist):
+        """Verify that there are no conflicting "old-style" packages"""
+
+        return dist     # XXX temporarily disable until new strategy is stable
+        from imp import find_module, get_suffixes
+        from glob import glob
+
+        blockers = []
+        names = dict.fromkeys(dist._get_metadata('top_level.txt')) # XXX private attr
+
+        exts = {'.pyc':1, '.pyo':1}     # get_suffixes() might leave one out
+        for ext,mode,typ in get_suffixes():
+            exts[ext] = 1
+
+        for path,files in expand_paths([self.install_dir]+self.all_site_dirs):
+            for filename in files:
+                base,ext = os.path.splitext(filename)
+                if base in names:
+                    if not ext:
+                        # no extension, check for package
+                        try:
+                            f, filename, descr = find_module(base, [path])
+                        except ImportError:
+                            continue
+                        else:
+                            if f: f.close()
+                            if filename not in blockers:
+                                blockers.append(filename)
+                    elif ext in exts and base!='site':  # XXX ugh
+                        blockers.append(os.path.join(path,filename))
+        if blockers:
+            self.found_conflicts(dist, blockers)
+
+        return dist
+
+    def found_conflicts(self, dist, blockers):
+        if self.delete_conflicting:
+            log.warn("Attempting to delete conflicting packages:")
+            return self.delete_blockers(blockers)
+
+        msg = """\
+-------------------------------------------------------------------------
+CONFLICT WARNING:
+
+The following modules or packages have the same names as modules or
+packages being installed, and will be *before* the installed packages in
+Python's search path.  You MUST remove all of the relevant files and
+directories before you will be able to use the package(s) you are
+installing:
+
+   %s
+
+""" % '\n   '.join(blockers)
+
+        if self.ignore_conflicts_at_my_risk:
+            msg += """\
+(Note: you can run EasyInstall on '%s' with the
+--delete-conflicting option to attempt deletion of the above files
+and/or directories.)
+""" % dist.project_name
+        else:
+            msg += """\
+Note: you can attempt this installation again with EasyInstall, and use
+either the --delete-conflicting (-D) option or the
+--ignore-conflicts-at-my-risk option, to either delete the above files
+and directories, or to ignore the conflicts, respectively.  Note that if
+you ignore the conflicts, the installed package(s) may not work.
+"""
+        msg += """\
+-------------------------------------------------------------------------
+"""
+        sys.stderr.write(msg)
+        sys.stderr.flush()
+        if not self.ignore_conflicts_at_my_risk:
+            raise DistutilsError("Installation aborted due to conflicts")
+
+    def installation_report(self, req, dist, what="Installed"):
+        """Helpful installation message for display to package users"""
+        msg = "\n%(what)s %(eggloc)s%(extras)s"
+        if self.multi_version and not self.no_report:
+            msg += """
+
+Because this distribution was installed --multi-version, before you can
+import modules from this package in an application, you will need to
+'import pkg_resources' and then use a 'require()' call similar to one of
+these examples, in order to select the desired version:
+
+    pkg_resources.require("%(name)s")  # latest installed version
+    pkg_resources.require("%(name)s==%(version)s")  # this exact version
+    pkg_resources.require("%(name)s>=%(version)s")  # this version or higher
+"""
+            if self.install_dir not in map(normalize_path,sys.path):
+                msg += """
+
+Note also that the installation directory must be on sys.path at runtime for
+this to work.  (e.g. by being the application's script directory, by being on
+PYTHONPATH, or by being added to sys.path by your code.)
+"""
+        eggloc = dist.location
+        name = dist.project_name
+        version = dist.version
+        extras = '' # TODO: self.report_extras(req, dist)
+        return msg % locals()
+
+    def report_editable(self, spec, setup_script):
+        dirname = os.path.dirname(setup_script)
+        python = sys.executable
+        return """\nExtracted editable version of %(spec)s to %(dirname)s
+
+If it uses setuptools in its setup script, you can activate it in
+"development" mode by going to that directory and running::
+
+    %(python)s setup.py develop
+
+See the setuptools documentation for the "develop" command for more info.
+""" % locals()
+
+    def run_setup(self, setup_script, setup_base, args):
+        sys.modules.setdefault('distutils.command.bdist_egg', bdist_egg)
+        sys.modules.setdefault('distutils.command.egg_info', egg_info)
+
+        args = list(args)
+        if self.verbose>2:
+            v = 'v' * (self.verbose - 1)
+            args.insert(0,'-'+v)
+        elif self.verbose<2:
+            args.insert(0,'-q')
+        if self.dry_run:
+            args.insert(0,'-n')
+        log.info(
+            "Running %s %s", setup_script[len(setup_base)+1:], ' '.join(args)
+        )
+        try:
+            run_setup(setup_script, args)
+        except SystemExit, v:
+            raise DistutilsError("Setup script exited with %s" % (v.args[0],))
+
+    def build_and_install(self, setup_script, setup_base):
+        args = ['bdist_egg', '--dist-dir']
+        dist_dir = tempfile.mkdtemp(
+            prefix='egg-dist-tmp-', dir=os.path.dirname(setup_script)
+        )
+        try:
+            args.append(dist_dir)
+            self.run_setup(setup_script, setup_base, args)
+            all_eggs = Environment([dist_dir])
+            eggs = []
+            for key in all_eggs:
+                for dist in all_eggs[key]:
+                    eggs.append(self.install_egg(dist.location, setup_base))
+            if not eggs and not self.dry_run:
+                log.warn("No eggs found in %s (setup script problem?)",
+                    dist_dir)
+            return eggs
+        finally:
+            rmtree(dist_dir)
+            log.set_verbosity(self.verbose) # restore our log verbosity
+
+    def update_pth(self,dist):
+        if self.pth_file is None:
+            return
+
+        for d in self.pth_file[dist.key]:    # drop old entries
+            if self.multi_version or d.location != dist.location:
+                log.info("Removing %s from easy-install.pth file", d)
+                self.pth_file.remove(d)
+                if d.location in self.shadow_path:
+                    self.shadow_path.remove(d.location)
+
+        if not self.multi_version:
+            if dist.location in self.pth_file.paths:
+                log.info(
+                    "%s is already the active version in easy-install.pth",
+                    dist
+                )
+            else:
+                log.info("Adding %s to easy-install.pth file", dist)
+                self.pth_file.add(dist) # add new entry
+                if dist.location not in self.shadow_path:
+                    self.shadow_path.append(dist.location)
+
+        if not self.dry_run:
+
+            self.pth_file.save()
+
+            if dist.key=='setuptools':
+                # Ensure that setuptools itself never becomes unavailable!
+                # XXX should this check for latest version?
+                filename = os.path.join(self.install_dir,'setuptools.pth')
+                if os.path.islink(filename): os.unlink(filename)
+                f = open(filename, 'wt')
+                f.write(self.pth_file.make_relative(dist.location)+'\n')
+                f.close()
+
+    def unpack_progress(self, src, dst):
+        # Progress filter for unpacking
+        log.debug("Unpacking %s to %s", src, dst)
+        return dst     # only unpack-and-compile skips files for dry run
+
+    def unpack_and_compile(self, egg_path, destination):
+        to_compile = []; to_chmod = []
+
+        def pf(src,dst):
+            if dst.endswith('.py') and not src.startswith('EGG-INFO/'):
+                to_compile.append(dst)
+                to_chmod.append(dst)
+            elif dst.endswith('.dll') or dst.endswith('.so'):
+                to_chmod.append(dst)
+            self.unpack_progress(src,dst)
+            return not self.dry_run and dst or None
+
+        unpack_archive(egg_path, destination, pf)
+        self.byte_compile(to_compile)
+        if not self.dry_run:
+            for f in to_chmod:
+                mode = ((os.stat(f)[stat.ST_MODE]) | 0555) & 07755
+                chmod(f, mode)
+
+    def byte_compile(self, to_compile):
+        from distutils.util import byte_compile
+        try:
+            # try to make the byte compile messages quieter
+            log.set_verbosity(self.verbose - 1)
+
+            byte_compile(to_compile, optimize=0, force=1, dry_run=self.dry_run)
+            if self.optimize:
+                byte_compile(
+                    to_compile, optimize=self.optimize, force=1,
+                    dry_run=self.dry_run
+                )
+        finally:
+            log.set_verbosity(self.verbose)     # restore original verbosity
+
+
+
+
+
+
+
+
+    def no_default_version_msg(self):
+        return """bad install directory or PYTHONPATH
+
+You are attempting to install a package to a directory that is not
+on PYTHONPATH and which Python does not read ".pth" files from.  The
+installation directory you specified (via --install-dir, --prefix, or
+the distutils default setting) was:
+
+    %s
+
+and your PYTHONPATH environment variable currently contains:
+
+    %r
+
+Here are some of your options for correcting the problem:
+
+* You can choose a different installation directory, i.e., one that is
+  on PYTHONPATH or supports .pth files
+
+* You can add the installation directory to the PYTHONPATH environment
+  variable.  (It must then also be on PYTHONPATH whenever you run
+  Python and want to use the package(s) you are installing.)
+
+* You can set up the installation directory to support ".pth" files by
+  using one of the approaches described here:
+
+  http://peak.telecommunity.com/EasyInstall.html#custom-installation-locations
+
+Proceeding to install.  Please remember that unless you make one of
+these changes you will not be able to run the installed code.
+""" % (
+        self.install_dir, os.environ.get('PYTHONPATH','')
+    )
+
+
+
+
+
+
+
+
+
+
+    def install_site_py(self):
+        """Make sure there's a site.py in the target dir, if needed"""
+
+        if self.sitepy_installed:
+            return  # already did it, or don't need to
+
+        sitepy = os.path.join(self.install_dir, "site.py")
+        source = resource_string("setuptools", "site-patch.py")
+        current = ""
+
+        if os.path.exists(sitepy):
+            log.debug("Checking existing site.py in %s", self.install_dir)
+            current = open(sitepy,'rb').read()
+            if not current.startswith('def __boot():'):
+                raise DistutilsError(
+                    "%s is not a setuptools-generated site.py; please"
+                    " remove it." % sitepy
+                )
+
+        if current != source:
+            log.info("Creating %s", sitepy)
+            if not self.dry_run:
+                ensure_directory(sitepy)
+                f = open(sitepy,'wb')
+                f.write(source)
+                f.close()
+            self.byte_compile([sitepy])
+
+        self.sitepy_installed = True
+
+
+
+
+
+
+
+
+
+
+
+
+    INSTALL_SCHEMES = dict(
+        posix = dict(
+            install_dir = '$base/lib/python$py_version_short/site-packages',
+            script_dir  = '$base/bin',
+        ),
+    )
+
+    DEFAULT_SCHEME = dict(
+        install_dir = '$base/Lib/site-packages',
+        script_dir  = '$base/Scripts',
+    )
+
+    def _expand(self, *attrs):
+        config_vars = self.get_finalized_command('install').config_vars
+
+        if self.prefix:
+            # Set default install_dir/scripts from --prefix
+            config_vars = config_vars.copy()
+            config_vars['base'] = self.prefix
+            scheme = self.INSTALL_SCHEMES.get(os.name,self.DEFAULT_SCHEME)
+            for attr,val in scheme.items():
+                if getattr(self,attr,None) is None:
+                    setattr(self,attr,val)
+
+        from distutils.util import subst_vars
+        for attr in attrs:
+            val = getattr(self, attr)
+            if val is not None:
+                val = subst_vars(val, config_vars)
+                if os.name == 'posix':
+                    val = os.path.expanduser(val)
+                setattr(self, attr, val)
+
+
+
+
+
+
+
+
+
+def get_site_dirs():
+    # return a list of 'site' dirs
+    sitedirs = filter(None,os.environ.get('PYTHONPATH','').split(os.pathsep))
+    prefixes = [sys.prefix]
+    if sys.exec_prefix != sys.prefix:
+        prefixes.append(sys.exec_prefix)
+    for prefix in prefixes:
+        if prefix:
+            if sys.platform in ('os2emx', 'riscos'):
+                sitedirs.append(os.path.join(prefix, "Lib", "site-packages"))
+            elif os.sep == '/':
+                sitedirs.extend([os.path.join(prefix,
+                                         "lib",
+                                         "python" + sys.version[:3],
+                                         "site-packages"),
+                            os.path.join(prefix, "lib", "site-python")])
+            else:
+                sitedirs.extend(
+                    [prefix, os.path.join(prefix, "lib", "site-packages")]
+                )
+            if sys.platform == 'darwin':
+                # for framework builds *only* we add the standard Apple
+                # locations. Currently only per-user, but /Library and
+                # /Network/Library could be added too
+                if 'Python.framework' in prefix:
+                    home = os.environ.get('HOME')
+                    if home:
+                        sitedirs.append(
+                            os.path.join(home,
+                                         'Library',
+                                         'Python',
+                                         sys.version[:3],
+                                         'site-packages'))
+    for plat_specific in (0,1):
+        site_lib = get_python_lib(plat_specific)
+        if site_lib not in sitedirs: sitedirs.append(site_lib)
+
+    sitedirs = map(normalize_path, sitedirs)
+    return sitedirs
+
+
+def expand_paths(inputs):
+    """Yield sys.path directories that might contain "old-style" packages"""
+
+    seen = {}
+
+    for dirname in inputs:
+        dirname = normalize_path(dirname)
+        if dirname in seen:
+            continue
+
+        seen[dirname] = 1
+        if not os.path.isdir(dirname):
+            continue
+
+        files = os.listdir(dirname)
+        yield dirname, files
+
+        for name in files:
+            if not name.endswith('.pth'):
+                # We only care about the .pth files
+                continue
+            if name in ('easy-install.pth','setuptools.pth'):
+                # Ignore .pth files that we control
+                continue
+
+            # Read the .pth file
+            f = open(os.path.join(dirname,name))
+            lines = list(yield_lines(f))
+            f.close()
+
+            # Yield existing non-dupe, non-import directory lines from it
+            for line in lines:
+                if not line.startswith("import"):
+                    line = normalize_path(line.rstrip())
+                    if line not in seen:
+                        seen[line] = 1
+                        if not os.path.isdir(line):
+                            continue
+                        yield line, os.listdir(line)
+
+
+def extract_wininst_cfg(dist_filename):
+    """Extract configuration data from a bdist_wininst .exe
+
+    Returns a ConfigParser.RawConfigParser, or None
+    """
+    f = open(dist_filename,'rb')
+    try:
+        endrec = zipfile._EndRecData(f)
+        if endrec is None:
+            return None
+
+        prepended = (endrec[9] - endrec[5]) - endrec[6]
+        if prepended < 12:  # no wininst data here
+            return None
+        f.seek(prepended-12)
+
+        import struct, StringIO, ConfigParser
+        tag, cfglen, bmlen = struct.unpack("<iii",f.read(12))
+        if tag not in (0x1234567A, 0x1234567B):
+            return None     # not a valid tag
+
+        f.seek(prepended-(12+cfglen))
+        cfg = ConfigParser.RawConfigParser({'version':'','target_version':''})
+        try:
+            cfg.readfp(StringIO.StringIO(f.read(cfglen).split(chr(0),1)[0]))
+        except ConfigParser.Error:
+            return None
+        if not cfg.has_section('metadata') or not cfg.has_section('Setup'):
+            return None
+        return cfg
+
+    finally:
+        f.close()
+
+
+
+
+
+
+
+
+def get_exe_prefixes(exe_filename):
+    """Get exe->egg path translations for a given .exe file"""
+
+    prefixes = [
+        ('PURELIB/', ''), ('PLATLIB/pywin32_system32', ''),
+        ('PLATLIB/', ''),
+        ('SCRIPTS/', 'EGG-INFO/scripts/')
+    ]
+    z = zipfile.ZipFile(exe_filename)
+    try:
+        for info in z.infolist():
+            name = info.filename
+            parts = name.split('/')
+            if len(parts)==3 and parts[2]=='PKG-INFO':
+                if parts[1].endswith('.egg-info'):
+                    prefixes.insert(0,('/'.join(parts[:2]), 'EGG-INFO/'))
+                    break
+            if len(parts)<>2 or not name.endswith('.pth'):
+                continue
+            if name.endswith('-nspkg.pth'):
+                continue
+            if parts[0].upper() in ('PURELIB','PLATLIB'):
+                for pth in yield_lines(z.read(name)):
+                    pth = pth.strip().replace('\\','/')
+                    if not pth.startswith('import'):
+                        prefixes.append((('%s/%s/' % (parts[0],pth)), ''))
+    finally:
+        z.close()
+    prefixes = [(x.lower(),y) for x, y in prefixes]
+    prefixes.sort(); prefixes.reverse()
+    return prefixes
+
+
+def parse_requirement_arg(spec):
+    try:
+        return Requirement.parse(spec)
+    except ValueError:
+        raise DistutilsError(
+            "Not a URL, existing file, or requirement spec: %r" % (spec,)
+        )
+
+class PthDistributions(Environment):
+    """A .pth file with Distribution paths in it"""
+
+    dirty = False
+
+    def __init__(self, filename, sitedirs=()):
+        self.filename = filename; self.sitedirs=map(normalize_path, sitedirs)
+        self.basedir = normalize_path(os.path.dirname(self.filename))
+        self._load(); Environment.__init__(self, [], None, None)
+        for path in yield_lines(self.paths):
+            map(self.add, find_distributions(path, True))
+
+    def _load(self):
+        self.paths = []
+        saw_import = False
+        seen = dict.fromkeys(self.sitedirs)
+        if os.path.isfile(self.filename):
+            for line in open(self.filename,'rt'):
+                if line.startswith('import'):
+                    saw_import = True
+                    continue
+                path = line.rstrip()
+                self.paths.append(path)
+                if not path.strip() or path.strip().startswith('#'):
+                    continue
+                # skip non-existent paths, in case somebody deleted a package
+                # manually, and duplicate paths as well
+                path = self.paths[-1] = normalize_path(
+                    os.path.join(self.basedir,path)
+                )
+                if not os.path.exists(path) or path in seen:
+                    self.paths.pop()    # skip it
+                    self.dirty = True   # we cleaned up, so we're dirty now :)
+                    continue
+                seen[path] = 1
+
+        if self.paths and not saw_import:
+            self.dirty = True   # ensure anything we touch has import wrappers
+        while self.paths and not self.paths[-1].strip():
+            self.paths.pop()
+
+    def save(self):
+        """Write changed .pth file back to disk"""
+        if not self.dirty:
+            return
+
+        data = '\n'.join(map(self.make_relative,self.paths))
+        if data:
+            log.debug("Saving %s", self.filename)
+            data = (
+                "import sys; sys.__plen = len(sys.path)\n"
+                "%s\n"
+                "import sys; new=sys.path[sys.__plen:];"
+                " del sys.path[sys.__plen:];"
+                " p=getattr(sys,'__egginsert',len(os.environ.get('PYTHONPATH','').split(os.pathsep))); sys.path[p:p]=new;"
+                " sys.__egginsert = p+len(new)\n"
+            ) % data
+
+            if os.path.islink(self.filename):
+                os.unlink(self.filename)
+            f = open(self.filename,'wb')
+            f.write(data); f.close()
+
+        elif os.path.exists(self.filename):
+            log.debug("Deleting empty %s", self.filename)
+            os.unlink(self.filename)
+
+        self.dirty = False
+
+    def add(self,dist):
+        """Add `dist` to the distribution map"""
+        if dist.location not in self.paths and dist.location not in self.sitedirs:
+            self.paths.append(dist.location); self.dirty = True
+        Environment.add(self,dist)
+
+    def remove(self,dist):
+        """Remove `dist` from the distribution map"""
+        while dist.location in self.paths:
+            self.paths.remove(dist.location); self.dirty = True
+        Environment.remove(self,dist)
+
+
+    def make_relative(self,path):
+        npath, last = os.path.split(normalize_path(path))
+        baselen = len(self.basedir)
+        parts = [last]
+        sep = os.altsep=='/' and '/' or os.sep
+        while len(npath)>=baselen:
+            if npath==self.basedir:
+                parts.append(os.curdir)
+                parts.reverse()
+                return sep.join(parts)
+            npath, last = os.path.split(npath)
+            parts.append(last)
+        else:
+            return path
+
+def get_script_header(script_text, executable=sys_executable, wininst=False):
+    """Create a #! line, getting options (if any) from script_text"""
+    from distutils.command.build_scripts import first_line_re
+    first = (script_text+'\n').splitlines()[0]
+    match = first_line_re.match(first)
+    options = ''
+    if match:
+        options = match.group(1) or ''
+        if options: options = ' '+options
+    if wininst:
+        executable = "python.exe"
+    else:
+        executable = nt_quote_arg(executable)
+    hdr = "#!%(executable)s%(options)s\n" % locals()
+    if unicode(hdr,'ascii','ignore').encode('ascii') != hdr:
+        # Non-ascii path to sys.executable, use -x to prevent warnings
+        if options:
+            if options.strip().startswith('-'):
+                options = ' -x'+options.strip()[1:]
+            # else: punt, we can't do it, let the warning happen anyway
+        else:
+            options = ' -x'
+    executable = fix_jython_executable(executable, options)
+    hdr = "#!%(executable)s%(options)s\n" % locals()
+    return hdr
+
+def auto_chmod(func, arg, exc):
+    if func is os.remove and os.name=='nt':
+        chmod(arg, stat.S_IWRITE)
+        return func(arg)
+    exc = sys.exc_info()
+    raise exc[0], (exc[1][0], exc[1][1] + (" %s %s" % (func,arg)))
+
+def uncache_zipdir(path):
+    """Ensure that the importer caches dont have stale info for `path`"""
+    from zipimport import _zip_directory_cache as zdc
+    _uncache(path, zdc)
+    _uncache(path, sys.path_importer_cache)
+
+def _uncache(path, cache):
+    if path in cache:
+        del cache[path]
+    else:
+        path = normalize_path(path)
+        for p in cache:
+            if normalize_path(p)==path:
+                del cache[p]
+                return
+
+def is_python(text, filename='<string>'):
+    "Is this string a valid Python script?"
+    try:
+        compile(text, filename, 'exec')
+    except (SyntaxError, TypeError):
+        return False
+    else:
+        return True
+
+def is_sh(executable):
+    """Determine if the specified executable is a .sh (contains a #! line)"""
+    try:
+        fp = open(executable)
+        magic = fp.read(2)
+        fp.close()
+    except (OSError,IOError): return executable
+    return magic == '#!'
+
+def nt_quote_arg(arg):
+    """Quote a command line argument according to Windows parsing rules"""
+
+    result = []
+    needquote = False
+    nb = 0
+
+    needquote = (" " in arg) or ("\t" in arg)
+    if needquote:
+        result.append('"')
+
+    for c in arg:
+        if c == '\\':
+            nb += 1
+        elif c == '"':
+            # double preceding backslashes, then add a \"
+            result.append('\\' * (nb*2) + '\\"')
+            nb = 0
+        else:
+            if nb:
+                result.append('\\' * nb)
+                nb = 0
+            result.append(c)
+
+    if nb:
+        result.append('\\' * nb)
+
+    if needquote:
+        result.append('\\' * nb)    # double the trailing backslashes
+        result.append('"')
+
+    return ''.join(result)
+
+
+
+
+
+
+
+
+
+def is_python_script(script_text, filename):
+    """Is this text, as a whole, a Python script? (as opposed to shell/bat/etc.
+    """
+    if filename.endswith('.py') or filename.endswith('.pyw'):
+        return True     # extension says it's Python
+    if is_python(script_text, filename):
+        return True     # it's syntactically valid Python
+    if script_text.startswith('#!'):
+        # It begins with a '#!' line, so check if 'python' is in it somewhere
+        return 'python' in script_text.splitlines()[0].lower()
+
+    return False    # Not any Python I can recognize
+
+try:
+    from os import chmod as _chmod
+except ImportError:
+    # Jython compatibility
+    def _chmod(*args): pass
+
+def chmod(path, mode):
+    log.debug("changing mode of %s to %o", path, mode)
+    try:
+        _chmod(path, mode)
+    except os.error, e:
+        log.debug("chmod failed: %s", e)
+
+def fix_jython_executable(executable, options):
+    if sys.platform.startswith('java') and is_sh(executable):
+        # Workaround Jython's sys.executable being a .sh (an invalid
+        # shebang line interpreter)
+        if options:
+            # Can't apply the workaround, leave it broken
+            log.warn("WARNING: Unable to adapt shebang line for Jython,"
+                             " the following script is NOT executable\n"
+                     "         see http://bugs.jython.org/issue1112 for"
+                             " more information.")
+        else:
+            return '/usr/bin/env %s' % executable
+    return executable
+
+
+def get_script_args(dist, executable=sys_executable, wininst=False):
+    """Yield write_script() argument tuples for a distribution's entrypoints"""
+    spec = str(dist.as_requirement())
+    header = get_script_header("", executable, wininst)
+    for group in 'console_scripts', 'gui_scripts':
+        for name,ep in dist.get_entry_map(group).items():
+            script_text = (
+                "# EASY-INSTALL-ENTRY-SCRIPT: %(spec)r,%(group)r,%(name)r\n"
+                "__requires__ = %(spec)r\n"
+                "import sys\n"
+                "from pkg_resources import load_entry_point\n"
+                "\n"
+                "sys.exit(\n"
+                "   load_entry_point(%(spec)r, %(group)r, %(name)r)()\n"
+                ")\n"
+            ) % locals()
+            if sys.platform=='win32' or wininst:
+                # On Windows/wininst, add a .py extension and an .exe launcher
+                if group=='gui_scripts':
+                    ext, launcher = '-script.pyw', 'gui.exe'
+                    old = ['.pyw']
+                    new_header = re.sub('(?i)python.exe','pythonw.exe',header)
+                else:
+                    ext, launcher = '-script.py', 'cli.exe'
+                    old = ['.py','.pyc','.pyo']
+                    new_header = re.sub('(?i)pythonw.exe','python.exe',header)
+
+                if os.path.exists(new_header[2:-1]) or sys.platform!='win32':
+                    hdr = new_header
+                else:
+                    hdr = header
+                yield (name+ext, hdr+script_text, 't', [name+x for x in old])
+                yield (
+                    name+'.exe', resource_string('setuptools', launcher),
+                    'b') # write in binary mode
+                yield (name+'.exe.manifest', _launcher_manifest % (name,), 't')
+            else:
+                # On other platforms, we assume the right thing to do is to
+                # just write the stub with no extension.
+                yield (name, header+script_text)
+
+_launcher_manifest = """
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+ <assemblyIdentity version="1.0.0.0"
+ processorArchitecture="X86"
+ name="%s.exe"
+ type="win32"/>
+
+ <!-- Identify the application security requirements. -->
+ <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
+ <security>
+ <requestedPrivileges>
+ <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
+ </requestedPrivileges>
+ </security>
+ </trustInfo>
+</assembly>"""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+def rmtree(path, ignore_errors=False, onerror=auto_chmod):
+    """Recursively delete a directory tree.
+
+    This code is taken from the Python 2.4 version of 'shutil', because
+    the 2.3 version doesn't really work right.
+    """
+    if ignore_errors:
+        def onerror(*args):
+            pass
+    elif onerror is None:
+        def onerror(*args):
+            raise
+    names = []
+    try:
+        names = os.listdir(path)
+    except os.error, err:
+        onerror(os.listdir, path, sys.exc_info())
+    for name in names:
+        fullname = os.path.join(path, name)
+        try:
+            mode = os.lstat(fullname).st_mode
+        except os.error:
+            mode = 0
+        if stat.S_ISDIR(mode):
+            rmtree(fullname, ignore_errors, onerror)
+        else:
+            try:
+                os.remove(fullname)
+            except os.error, err:
+                onerror(os.remove, fullname, sys.exc_info())
+    try:
+        os.rmdir(path)
+    except os.error:
+        onerror(os.rmdir, path, sys.exc_info())
+
+def bootstrap():
+    # This function is called when setuptools*.egg is run using /bin/sh
+    import setuptools; argv0 = os.path.dirname(setuptools.__path__[0])
+    sys.argv[0] = argv0; sys.argv.append(argv0); main()
+
+
+def main(argv=None, **kw):
+    from setuptools import setup
+    from setuptools.dist import Distribution
+    import distutils.core
+
+    USAGE = """\
+usage: %(script)s [options] requirement_or_url ...
+   or: %(script)s --help
+"""
+
+    def gen_usage (script_name):
+        script = os.path.basename(script_name)
+        return USAGE % vars()
+
+    def with_ei_usage(f):
+        old_gen_usage = distutils.core.gen_usage
+        try:
+            distutils.core.gen_usage = gen_usage
+            return f()
+        finally:
+            distutils.core.gen_usage = old_gen_usage
+
+    class DistributionWithoutHelpCommands(Distribution):
+        common_usage = ""
+        def _show_help(self,*args,**kw):
+            with_ei_usage(lambda: Distribution._show_help(self,*args,**kw))
+
+    if argv is None:
+        argv = sys.argv[1:]
+
+    with_ei_usage(lambda:
+        setup(
+            script_args = ['-q','easy_install', '-v']+argv,
+            script_name = sys.argv[0] or 'easy_install',
+            distclass=DistributionWithoutHelpCommands, **kw
+        )
+    )
+
+
+
+
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/easy_install.pyc
binary ./setuptools-0.6c14devdev.egg/setuptools/command/easy_install.pyc
oldhex
*
newhex
*d1f20d0a401ef84b6300000000000000001b00000040000000739c0200006400005a0000640100
*6402006b01005a01006401006402006b02005a03006401006402006b04005a0400640100640200
*6b05005a05006401006402006b06005a06006401006402006b07005a07006401006402006b0800
*5a08006401006402006b09005a09006401006402006b0a005a0a006401006403006b0b006c0b00
*5a0b00016401006404006b0c006c0d005a0d00016401006405006b0e006c0f005a0f0001640100
*6406006b10006c11005a11006c12005a1200016401006407006b13006c14005a14000164010064
*08006b15006c16005a16006c17005a17006c18005a1800016401006409006b19006c1a005a1a00
*01640100640a006b1b006c1c005a1c006c1d005a1d0001640100640b006b1b006c1e005a1e0001
*640100640c006b1f006c20005a20006c21005a210001640100640d006b22005465030069230069
*24006501006925008301005a2600640e00640f006410006411006412006413006706005a270064
*14008400005a2800640f00650d00660100641500840000830000595a29006416008400005a2a00
*6417008400005a2b006418008400005a2c006419008400005a2d00641a008400005a2e00641000
*652f00660100641b00840000830000595a3000652600653100641c008402005a3200641d008400
*005a3300641e008400005a3400641f008400005a35006420006421008401005a36006422008400
*005a37006423008400005a38006424008400005a39007914006401006425006b03006c3a005a3b
*0001576e1c0004653c006a0a006f1000010101016426008400005a3b006e020001586427008400
*005a3a006428008400005a3d006526006531006429008402005a3e00642a005a3f006531006533
*00642b008402005a4000642c008400005a4100654200642d008401005a430064020053282e0000
*0073190100004561737920496e7374616c6c0a2d2d2d2d2d2d2d2d2d2d2d2d0a0a4120746f6f6c
*20666f7220646f696e67206175746f6d6174696320646f776e6c6f61642f657874726163742f62
*75696c64206f6620646973747574696c732d626173656420507974686f6e0a7061636b61676573
*2e2020466f722064657461696c656420646f63756d656e746174696f6e2c207365652074686520
*6163636f6d70616e79696e672045617379496e7374616c6c2e7478740a66696c652c206f722076
*6973697420746865206045617379496e7374616c6c20686f6d652070616765605f5f2e0a0a5f5f
*20687474703a2f2f7065616b2e74656c65636f6d6d756e6974792e636f6d2f44657643656e7465
*722f45617379496e7374616c6c0a69ffffffff4e28010000007404000000676c6f622801000000
*7407000000436f6d6d616e642801000000740900000072756e5f73657475702802000000740300
*00006c6f6774080000006469725f7574696c2801000000740e0000006765745f707974686f6e5f
*6c696228030000007411000000446973747574696c734172674572726f72741400000044697374
*7574696c734f7074696f6e4572726f72740e000000446973747574696c734572726f7228010000
*00740e000000756e7061636b5f617263686976652802000000740c0000005061636b616765496e
*646578741300000070617273655f62646973745f77696e696e73742801000000740a0000005552
*4c5f534348454d452802000000740900000062646973745f65676774080000006567675f696e66
*6f280100000074010000002a740800000073616d6566696c65740c000000656173795f696e7374
*616c6c7410000000507468446973747269627574696f6e737413000000657874726163745f7769
*6e696e73745f63666774040000006d61696e74100000006765745f6578655f7072656669786573
*630200000002000000040000004300000073870000007400007401006902006401008302006f3a
*00017401006902006903007c00008301006f2700017401006902006903007c01008301006f1400
*017401006902006904007c00007c01008302005301740100690200690500740100690200690600
*7c00008301008301007401006902006905007401006902006906007c01008301008301006a0200
*5328020000004e5210000000280700000074070000006861736174747274020000006f73740400
*0000706174687406000000657869737473521000000074080000006e6f726d7061746874080000
*006e6f726d63617365280200000074020000007031740200000070322800000000280000000073
*4c000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663313464657664
*65762e6567675c7365747570746f6f6c735c636f6d6d616e645c656173795f696e7374616c6c2e
*7079521000000020000000730a00000000011301260214021b0163000000000000000017000000
*42000000733d0200006500005a01006400005a02006401005a03006504005a0500646e00646f00
*647000647100647200647300647400647500647600647700647800647900647a00647b00647c00
*647d00647e00647f006480006481006482006715005a0700640400640700641300640a00641600
*641f00642200643100643400643a00670a005a0800680100640400642b00365a0900650a005a0b
*00643d008400005a0c00643e008400005a0d00643f008400005a0e006440008400005a0f006441
*008400005a10006442008400005a11006443008400005a12006444008400005a13006445008400
*005a14006446008400005a15006447008400005a16006448008400005a17006449008400005a18
*00651900644a008401005a1a00651900644b008401005a1b00650400644c008401005a1c00644d
*008400005a1d00644e008400005a1e00644f008400005a1f00646d006450008401005a20006451
*006483006452008402005a21006453008400005a22006454008400005a23006455008400005a24
*006456008400005a25006457008400005a26006458008400005a27006459008400005a2800645a
*00645b008401005a2900645c008400005a2a00645d008400005a2b00645e008400005a2c00645f
*008400005a2d006460008400005a2e006461008400005a2f006462008400005a30006463008400
*005a31006464008400005a32006533006465006533006466006467006468006469008300028300
*015a3400653300646600646a00646800646b008300025a3500646c008400005a36005253288400
*000073270000004d616e616765206120646f776e6c6f61642f6275696c642f696e7374616c6c20
*70726f63657373732000000046696e642f6765742f696e7374616c6c20507974686f6e20706163
*6b6167657373070000007072656669783d7313000000696e7374616c6c6174696f6e2070726566
*697873060000007a69702d6f6b74010000007a731c000000696e7374616c6c207061636b616765
*2061732061207a697066696c65730d0000006d756c74692d76657273696f6e74010000006d7325
*0000006d616b652061707073206861766520746f2072657175697265282920612076657273696f
*6e7407000000757067726164657401000000557331000000666f72636520757067726164652028
*7365617263686573205079504920666f72206c61746573742076657273696f6e7329730c000000
*696e7374616c6c2d6469723d7401000000647316000000696e7374616c6c207061636b61676520
*746f20444952730b0000007363726970742d6469723d7401000000737316000000696e7374616c
*6c207363726970747320746f20444952730f0000006578636c7564652d73637269707473740100
*0000787315000000446f6e277420696e7374616c6c2073637269707473730b000000616c776179
*732d636f70797401000000617327000000436f707920616c6c206e6565646564207061636b6167
*657320746f20696e7374616c6c20646972730a000000696e6465782d75726c3d74010000006973
*20000000626173652055524c206f6620507974686f6e205061636b61676520496e646578730b00
*000066696e642d6c696e6b733d74010000006673280000006164646974696f6e616c2055524c28
*732920746f2073656172636820666f72207061636b61676573731200000064656c6574652d636f
*6e666c696374696e6774010000004473200000006e6f206c6f6e676572206e65656465643b2064
*6f6e2774207573652074686973731b00000069676e6f72652d636f6e666c696374732d61742d6d
*792d7269736b73100000006275696c642d6469726563746f72793d740100000062732f00000064
*6f776e6c6f61642f657874726163742f6275696c6420696e204449523b206b6565702074686520
*726573756c747373090000006f7074696d697a653d74010000004f736c000000616c736f20636f
*6d70696c652077697468206f7074696d697a6174696f6e3a202d4f3120666f722022707974686f
*6e202d4f222c202d4f3220666f722022707974686f6e202d4f4f222c20616e64202d4f3020746f
*2064697361626c65205b64656661756c743a202d4f305d73070000007265636f72643d73330000
*0066696c656e616d6520696e20776869636820746f207265636f7264206c697374206f6620696e
*7374616c6c65642066696c6573730c000000616c776179732d756e7a697074010000005a732a00
*0000646f6e277420696e7374616c6c2061732061207a697066696c652c206e6f206d6174746572
*2077686174730a000000736974652d646972733d74010000005373290000006c697374206f6620
*6469726563746f72696573207768657265202e7074682066696c657320776f726b740800000065
*64697461626c65740100000065732b000000496e7374616c6c2073706563696669656420706163
*6b6167657320696e206564697461626c6520666f726d73070000006e6f2d646570737401000000
*4e731a000000646f6e277420696e7374616c6c20646570656e64656e63696573730c000000616c
*6c6f772d686f7374733d74010000004873240000007061747465726e287329207468617420686f
*73746e616d6573206d757374206d6174636873120000006c6f63616c2d736e617073686f74732d
*6f6b74010000006c7328000000616c6c6f77206275696c64696e6720656767732066726f6d206c
*6f63616c20636865636b6f75747363010000000100000004000000430000007321010000640000
*047c00005f01007c00005f0200640000047c00005f0300047c00005f04007c00005f0500640000
*7c00005f06006400007c00005f07006400007c00005f08006400007c00005f0900640000047c00
*005f0a007c00005f0b00640000047c00005f0c00047c00005f0d007c00005f0e00640000047c00
*005f0f00047c00005f10007c00005f1100640000047c00005f1200047c00005f13007c00005f14
*006400007c00005f1500640000047c00005f16007c00005f17006400007c00005f18006400007c
*00005f19006400007c00005f1a006800007c00005f1b00741c007c00005f1d006400007c00005f
*1e007c0000691f006920007c00005f20007c0000691f006921007c00007c0000691f0069220064
*0100830100830200016400005328020000004e5211000000282300000074040000004e6f6e6574
*060000007a69705f6f6b74120000006c6f63616c5f736e617073686f74735f6f6b740b00000069
*6e7374616c6c5f646972740a0000007363726970745f646972740f0000006578636c7564655f73
*6372697074737409000000696e6465785f75726c740a00000066696e645f6c696e6b73740f0000
*006275696c645f6469726563746f727974040000006172677374080000006f7074696d697a6574
*060000007265636f72645220000000740b000000616c776179735f636f7079740d0000006d756c
*74695f76657273696f6e522d00000074070000006e6f5f64657073740b000000616c6c6f775f68
*6f7374737404000000726f6f74740600000070726566697874090000006e6f5f7265706f727474
*0d0000007061636b6167655f696e64657874080000007074685f66696c657410000000616c7761
*79735f636f70795f66726f6d741200000064656c6574655f636f6e666c696374696e67741b0000
*0069676e6f72655f636f6e666c696374735f61745f6d795f7269736b7409000000736974655f64
*6972737412000000696e7374616c6c65645f70726f6a65637473740500000046616c7365741000
*00007369746570795f696e7374616c6c656474080000005f6472795f72756e740c000000646973
*747269627574696f6e7407000000766572626f736574140000005f7365745f636f6d6d616e645f
*6f7074696f6e73740f0000006765745f6f7074696f6e5f64696374280100000074040000007365
*6c6628000000002800000000734c000000433a5c7461686f652d6c6166735c7365747570746f6f
*6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c
*656173795f696e7374616c6c2e70797412000000696e697469616c697a655f6f7074696f6e7353
*000000732a00000000011001170109010901090109011001170117011703090110010901090109
*010901090609010f0109016302000000030000000400000043000000739f0000007898007c0100
*445d90007d02007400006901006902007c0200830100701300017400006901006903007c020083
*01006f6400017404006905006401007c0200830200017c00006906007046000174000069010069
*07007c02008301006f2200017400006901006903007c02008301000c6f0e00017408007c020083
*010001719300017400006909007c02008301000171970001710700017107005764000053280200
*00004e730b00000044656c6574696e67202573280a000000521700000052180000005219000000
*740600000069736c696e6b52030000007404000000696e666f74070000006472795f72756e7405
*00000069736469727406000000726d747265657406000000756e6c696e6b280300000052530000
*007408000000626c6f636b657273740800000066696c656e616d6528000000002800000000734c
*000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465
*762e6567675c7365747570746f6f6c735c636f6d6d616e645c656173795f696e7374616c6c2e70
*79740f00000064656c6574655f626c6f636b657273720000007310000000000107000601260110
*010a0127010e026301000000090000000f0000004300000073f10300007c000069000064010064
*0200640300640400830400017c00006901006400006a08006f1000017c00006903007c00005f01
*006e0100017c0000690400640500641700830200017c0000690400640600641800830200017c00
*00690400640700641900830200017405007406007407006908008302007d01007409008300007c
*00005f0a007c0000690b006400006a09006fb80001670000047d02007c0000690b00690c006409
*00830100445d1f007d03007c0200740d00690800690e007c0300690f008300008301001271ab00
*7e02007d04007876007c0400445d6a007d0500740d006908006910007c05008301007014000174
*1100691200640a007c05008302000171da00017406007c05008301007c01006a07006f14000174
*13007c0500640b001783010082010071da00017c0000690a006914007406007c05008301008301
*000171da00576e0100017c0000691500700e00017c0000691600830000016e0100017c00006917
*0070040001640c007c00005f17007c0000690a001e7c00005f18007847007c0000690300740600
*7c0000690100830100660200445d2d007d06007c06007c00006918006a07006f1700017c000069
*1800691900640d007c060083020001719d0101719d01577c0000691a006400006a09006f370001
*670000047d07007c0000691a00690c00640900830100445d13007d03007c07007c0300690f0083
*00001271f5017e07007d08006e0a0001640e006701007d08007c0000691b006400006a08006f2f
*00017c0000691c007c0000691700640f007c0000691800740700690800176410007c0800830102
*7c00005f1b006e010001741d007c0000691800740700690800178301007c00005f1e007c000069
*1f006400006a09006f2d00017420007c0000691f007421008302006f1600017c0000691f00690c
*008300007c00005f1f0071bc02016e0a00016700007c00005f1f007c00006922006f1e00017c00
*00691b006923007c000069180074070069080017830100016e0100017c0000691b006924007c00
*00691f00830100017c0000690400640500641a00830200017420007c0000692500742600830200
*706700017941007426007c00006925008301007c00005f2500640d007c000069250004036a0100
*6f0a00016412006a01006e02000201700a00017427008201006e01000157718103047427006a0a
*006f13000101010174130064130083010082010071810301586e0100017c00006928006f1a0001
*7c00006929006f1000017413006414008301008201006e0100017c00006915006f1b00017c0000
*692a000c6f100001742b006415008301008201006e0100017c0000692c0070100001742b006416
*008301008201006e0100016700007c00005f2d0064000053281b0000004e523500000052360000
*00523a000000524a000000740b000000696e7374616c6c5f6c6962740f000000696e7374616c6c
*5f736372697074737407000000696e7374616c6c523d00000074010000002c7322000000257320
*28696e202d2d736974652d646972732920646f6573206e6f742065786973747324000000202869
*6e202d2d736974652d6469727329206973206e6f74206f6e207379732e70617468731d00000068
*7474703a2f2f707970692e707974686f6e2e6f72672f73696d706c656900000000520f00000074
*0b0000007365617263685f706174687405000000686f737473523c0000006902000000731d0000
*002d2d6f7074696d697a65206d75737420626520302c20312c206f722032735600000043616e27
*742075736520626f7468202d2d64656c6574652d636f6e666c696374696e6720616e64202d2d69
*676e6f72652d636f6e666c696374732d61742d6d792d7269736b206174207468652073616d6520
*74696d6573390000004d75737420737065636966792061206275696c64206469726563746f7279
*20282d6229207768656e207573696e67202d2d6564697461626c65733a0000004e6f2075726c73
*2c2066696c656e616d65732c206f7220726571756972656d656e74732073706563696669656420
*28736565202d2d68656c70292802000000730b000000696e7374616c6c5f646972730b00000069
*6e7374616c6c5f6469722802000000730b000000696e7374616c6c5f646972730a000000736372
*6970745f646972280200000073060000007265636f726473060000007265636f72642802000000
*73080000006f7074696d697a6573080000006f7074696d697a65282e00000074070000005f6578
*70616e6452360000005232000000523500000074150000007365745f756e646566696e65645f6f
*7074696f6e7374030000006d6170740e0000006e6f726d616c697a655f70617468740300000073
*79735218000000740d0000006765745f736974655f64697273740d000000616c6c5f736974655f
*64697273524a000000740500000073706c69745217000000740a000000657870616e6475736572
*740500000073747269705258000000520300000074040000007761726e52070000007406000000
*617070656e64522d000000740e000000636865636b5f736974655f6469725238000000740b0000
*00736861646f775f706174687406000000696e7365727452410000005245000000740c00000063
*72656174655f696e646578740b000000456e7669726f6e6d656e74740b0000006c6f63616c5f69
*6e6465785239000000740a0000006973696e7374616e6365740a00000062617365737472696e67
*5234000000740e0000007363616e5f6567675f6c696e6b73740e0000006164645f66696e645f6c
*696e6b73523c0000007403000000696e74740a00000056616c75654572726f7252480000005249
*000000523a0000005206000000523b00000074070000006f757470757473280900000052530000
*00521a00000074040000005f5b315d5223000000524a0000005222000000740900000070617468
*5f6974656d74040000005f5b325d526300000028000000002800000000734c000000433a5c7461
*686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c7365
*747570746f6f6c735c636f6d6d616e645c656173795f696e7374616c6c2e707974100000006669
*6e616c697a655f6f7074696f6e737c000000737800000000011603100110050901070309010703
*100112010c0110023f0207000601130114011301030111031e010a000e0113010d011900060110
*011b021001370209011001060129021902100113011a0209010a011e0113011001130103011201
*21000e010e011502140103010d03150103010d020a0103010d026301000000060000000d000000
*4300000073140100007c00006900007c00006901006900006a03006f1400017402006903007c00
*00690000830100016e0100017acf007825007c0000690400445d1a007d01007c00006905007c01
*007c00006906000c83020001713700577c00006907006f8f00017c00006908007d02007c000069
*09006f420001740a007c00006909008301007d0300783000740b00740a007c0200830100830100
*445d18007d04007c02007c0400197c03001f7c02007c04003c719400576e010001640100640200
*6b0c006c0d007d0500017c0000690e007c0500690f007c00006907007c02006602006403007c00
*0069070016830300016e0100017c000069100083000001576400007402006903007c0000690100
*69000083010001586400005328040000004e69ffffffff2801000000740900000066696c655f75
*74696c732700000077726974696e67206c697374206f6620696e7374616c6c65642066696c6573
*20746f202725732728110000005250000000524f0000005203000000740d0000007365745f7665
*72626f73697479523b00000052110000005240000000523d000000527c00000052420000007403
*0000006c656e74060000007872616e67657409000000646973747574696c735281000000740700
*000065786563757465740a00000077726974655f66696c6574170000007761726e5f6465707265
*63617465645f6f7074696f6e7328060000005253000000740400000073706563527c0000007408
*000000726f6f745f6c656e7407000000636f756e74657252810000002800000000280000000073
*4c000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663313464657664
*65762e6567675c7365747570746f6f6c735c636f6d6d616e645c656173795f696e7374616c6c2e
*7079740300000072756ece000000732800000000011601140103010a00060118010a0109010a01
*0f01130006011a0110010601120103010f020e0263010000000200000007000000430000007349
*0000007910007400006901008300007d0100576e1c000101017402006903006401007404006905
*008302007d01006e0100587400006906006907007c00006908006402007c010016830200532803
*00000073c800000052657475726e20612070736575646f2d74656d706e616d6520626173652069
*6e2074686520696e7374616c6c206469726563746f72792e0a2020202020202020546869732063
*6f646520697320696e74656e74696f6e616c6c79206e616976653b2069662061206d616c696369
*6f75732070617274792063616e20777269746520746f0a20202020202020207468652074617267
*6574206469726563746f727920796f7527726520616c726561647920696e206465657020646f6f
*646f6f2e0a202020202020202069000000007314000000746573742d656173792d696e7374616c
*6c2d2573280900000052170000007406000000676574706964740600000072616e646f6d740700
*000072616e64696e74526800000074060000006d6178696e74521800000074040000006a6f696e
*523500000028020000005253000000740300000070696428000000002800000000734c00000043
*3a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567
*675c7365747570746f6f6c735c636f6d6d616e645c656173795f696e7374616c6c2e7079740f00
*000070736575646f5f74656d706e616d65e4000000730a00000000050301100103011901630100
*000001000000020000004300000073290000007c0000690000700a00017c00006901006f110001
*740200690300640100830100016e0100016400005328020000004e73770000004e6f74653a2054
*6865202d442c202d2d64656c6574652d636f6e666c696374696e6720616e64202d2d69676e6f72
*652d636f6e666c696374732d61742d6d792d7269736b206e6f206c6f6e67657220686176652061
*6e7920707572706f736520616e642073686f756c64206e6f7420626520757365642e2804000000
*524800000052490000005203000000526e00000028010000005253000000280000000028000000
*00734c000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465
*766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c656173795f696e7374616c
*6c2e70795288000000ef0000007306000000000114010601630100000006000000090000004300
*000073ad0100007400007c00006901008301007d01007402006903006904007c01006401008302
*007d02007911007402006905007c010083010001576e1300047406006a0a006f0700010101016e
*020001587c00006907006908007c0100830100017c01007c00006907006a06007d03007c030070
*1000017c00006909008300007d03006e8500017c0000690a00830000640200177d040074020069
*0300690b007c04008301007d0500793c007c05006f110001740200690c007c0400830100016e01
*0001740d007c0400640300830200690e0083000001740200690c007c040083010001576e230004
*740600740f006602006a0a006f1100010101017c0000691000830000016e020001587c03000c6f
*2200017c00006911000c6f1700017412006913007c0000691400830000830100016e0100017c03
*006f2d00017c00006915006404006a08006f1900017417007c02007c00006907008302007c0000
*5f1500716c01016e0a00016404007c00005f15007c00006911006f2a0001740200690300690b00
*7c02008301000c6f1600017418007c00005f19006404007c00005f15006e0100017c01007c0000
*5f0100640400532805000000733b00000056657269667920746861742073656c662e696e737461
*6c6c5f646972206973202e7074682d63617061626c65206469722c206966206e65656465647310
*000000656173792d696e7374616c6c2e707468730b0000002e77726974652d7465737474010000
*00774e281a0000005267000000523500000052170000005218000000529100000074080000006d
*616b656469727374070000004f534572726f72526a000000526f0000007414000000636865636b
*5f7074685f70726f63657373696e6752930000005219000000525a00000074040000006f70656e
*7405000000636c6f73657407000000494f4572726f72741400000063616e745f77726974655f74
*6f5f746172676574523f0000005203000000526e00000074160000006e6f5f64656661756c745f
*76657273696f6e5f6d7367524600000052320000005212000000740400000054727565524d0000
*00280600000052530000007407000000696e73746469725246000000740b00000069735f736974
*655f64697274080000007465737466696c65740b000000746573745f6578697374732800000000
*2800000000734c000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663
*31346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c656173795f696e
*7374616c6c2e70795270000000f7000000733a00000000020f011503030111010e03050210030f
*0207021003100112010301070011011301110114010f0213021702070110011d0209021e010901
*0d016301000000020000000300000043000000735b000000640100740000690100830000640200
*197c0000690200660200167d01007403006904006905007c0000690200830100700e00017c0100
*640300377d01006e0b00017c0100640400377d01007406007c0100830100820100640000532805
*0000004e731201000063616e277420637265617465206f722072656d6f76652066696c65732069
*6e20696e7374616c6c206469726563746f72790a0a54686520666f6c6c6f77696e67206572726f
*72206f63637572726564207768696c6520747279696e6720746f20616464206f722072656d6f76
*652066696c657320696e207468650a696e7374616c6c6174696f6e206469726563746f72793a0a
*0a2020202025730a0a54686520696e7374616c6c6174696f6e206469726563746f727920796f75
*207370656369666965642028766961202d2d696e7374616c6c2d6469722c202d2d707265666978
*2c206f720a74686520646973747574696c732064656661756c742073657474696e672920776173
*3a0a0a2020202025730a690100000073a00000000a54686973206469726563746f727920646f65
*73206e6f742063757272656e746c792065786973742e2020506c65617365206372656174652069
*7420616e642074727920616761696e2c206f720a63686f6f7365206120646966666572656e7420
*696e7374616c6c6174696f6e206469726563746f727920287573696e6720746865202d64206f72
*202d2d696e7374616c6c2d6469720a6f7074696f6e292e0a73440200000a506572686170732079
*6f7572206163636f756e7420646f6573206e6f7420686176652077726974652061636365737320
*746f2074686973206469726563746f72793f20204966207468650a696e7374616c6c6174696f6e
*206469726563746f727920697320612073797374656d2d6f776e6564206469726563746f72792c
*20796f75206d6179206e65656420746f207369676e20696e0a6173207468652061646d696e6973
*747261746f72206f722022726f6f7422206163636f756e742e2020496620796f7520646f206e6f
*7420686176652061646d696e6973747261746976650a61636365737320746f2074686973206d61
*6368696e652c20796f75206d6179207769736820746f2063686f6f736520612064696666657265
*6e7420696e7374616c6c6174696f6e0a6469726563746f72792c2070726566657261626c79206f
*6e652074686174206973206c697374656420696e20796f757220505954484f4e5041544820656e
*7669726f6e6d656e740a7661726961626c652e0a0a466f7220696e666f726d6174696f6e206f6e
*206f74686572206f7074696f6e732c20796f75206d6179207769736820746f20636f6e73756c74
*207468650a646f63756d656e746174696f6e2061743a0a0a2020687474703a2f2f7065616b2e74
*656c65636f6d6d756e6974792e636f6d2f45617379496e7374616c6c2e68746d6c0a0a506c6561
*7365206d616b652074686520617070726f707269617465206368616e67657320666f7220796f75
*722073797374656d20616e642074727920616761696e2e0a280700000052680000007408000000
*6578635f696e666f52350000005217000000521800000052190000005208000000280200000052
*5300000074030000006d736728000000002800000000734c000000433a5c7461686f652d6c6166
*735c7365747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c
*735c636f6d6d616e645c656173795f696e7374616c6c2e7079529b00000026010000730e000000
*000c1d02160103040b02030e070163010000000b0000000c00000043000000730c0200007c0000
*6900007d01007401006902006401007c0100830200017c0000690300830000640200177d02007c
*0200640300177d03007404006905006906007c03008301007d0400792b007c04006f1100017404
*006907007c0300830100016e0100017408007c02006404008302007d0500576e23000474090074
*0a006602006a0a006f1100010101017c0000690b00830000016e560101587af3007c0500690c00
*6405007c030066010016830100017c0500690d00830000016410007d0500740f006910007d0600
*7404006911006406006a02006f6100017404006905006912007c06008301005c02007d07007d08
*007404006905006913007c07006407008302007d09007c08006914008300006408006a02006f1d
*00017404006905006906007c09008301006f0a00017c09007d0600713701016e01000164090064
*0a006b15006c16007d0a00017c0a007c0600640b00640c00640d00670400640e00830200017404
*006905006906007c03008301006f150001740100690200640f007c010083020001741700530157
*6410007c05006f0e00017c0500690d00830000016e0100017404006905006906007c0300830100
*6f1100017404006907007c0300830100016e0100017404006905006906007c02008301006f1100
*017404006907007c0200830100016e010001587c0000691800701400017401006919006411007c
*0100830200016e010001741a005328120000007340000000456d7069726963616c6c7920766572
*6966792077686574686572202e7074682066696c65732061726520737570706f7274656420696e
*20696e73742e206469727320000000436865636b696e67202e7074682066696c6520737570706f
*727420696e20257373040000002e70746873030000002e6f6b52940000007323000000696d706f
*7274206f733b6f70656e2825722c277727292e777269746528274f4b27290a74020000006e7473
*0b000000707974686f6e772e657865730a000000707974686f6e2e65786569ffffffff28010000
*007405000000737061776e73020000002d4573020000002d637404000000706173736900000000
*732d00000054455354205041535345443a202573206170706561727320746f20737570706f7274
*202e7074682066696c65734e732b00000054455354204641494c45443a20257320646f6573204e
*4f5420737570706f7274202e7074682066696c6573281b00000052350000005203000000525600
*00005293000000521700000052180000005219000000525a00000052980000005296000000529a
*000000529b00000074050000007772697465529900000052320000005268000000740a00000065
*786563757461626c6574040000006e616d65526b000000529100000074050000006c6f77657274
*0f000000646973747574696c732e737061776e52a5000000529d000000523f000000526e000000
*524c000000280b0000005253000000529e000000524600000074070000006f6b5f66696c657409
*0000006f6b5f657869737473522700000052a800000074070000006469726e616d657408000000
*626173656e616d657403000000616c7452a500000028000000002800000000734c000000433a5c
*7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c
*7365747570746f6f6c735c636f6d6d616e645c656173795f696e7374616c6c2e70795297000000
*4f010000734a00000000020901100110010a011201030107001101130114010f02030114010a00
*0601090110011801150126020e02100119021301060103010702090207000e0113001101130012
*010a0114016302000000030000000700000043000000736a0000007c00006900000c6f4e00017c
*01006901006401008301006f3e0001783b007c0100690200640100830100445d26007d02007c00
*006903007c01007c02007c01006904006402007c02001783010083030001712b00576e0100017c
*00006905007c010083010001640300532804000000733d000000577269746520616c6c20746865
*207363726970747320666f72206064697374602c20756e6c657373207363726970747320617265
*206578636c756465647407000000736372697074737308000000736372697074732f4e28060000
*005237000000740e0000006d657461646174615f697364697274100000006d657461646174615f
*6c697374646972740e000000696e7374616c6c5f736372697074740c0000006765745f6d657461
*646174617417000000696e7374616c6c5f777261707065725f7363726970747328030000005253
*000000740400000064697374740b0000007363726970745f6e616d652800000000280000000073
*4c000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663313464657664
*65762e6567675c7365747570746f6f6c735c636f6d6d616e645c656173795f696e7374616c6c2e
*70797413000000696e7374616c6c5f6567675f7363726970747378010000730e00000000021b01
*10000601060106011c026302000000060000000600000043000000737e00000074000069010069
*02007c01008301006f5700017864007400006903007c0100830100445d3f005c03007d02007d03
*007d0400782d007c0400445d25007d05007c00006904006905007400006901006906007c02007c
*05008302008301000171390057712300576e1100017c00006904006905007c0100830100016400
*005328010000004e2807000000521700000052180000005258000000740400000077616c6b527c
*000000526f00000052910000002806000000525300000052180000007404000000626173657404
*00000064697273740500000066696c6573525c00000028000000002800000000734c000000433a
*5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e656767
*5c7365747570746f6f6c735c636f6d6d616e645c656173795f696e7374616c6c2e7079740a0000
*006164645f6f757470757482010000730e0000000001130110000f01070006012b026302000000
*02000000030000004300000073250000007c00006900006f1700017401006401007c0100660100
*168301008201006e0100016400005328020000004e736a000000496e76616c696420617267756d
*656e742025723a20796f752063616e2774207573652066696c656e616d6573206f722055524c73
*2077697468202d2d6564697461626c6520286578636570742076696120746865202d2d66696e64
*2d6c696e6b73206f7074696f6e292e2802000000522d0000005206000000280200000052530000
*00528900000028000000002800000000734c000000433a5c7461686f652d6c6166735c73657475
*70746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d
*616e645c656173795f696e7374616c6c2e7079740c0000006e6f745f6564697461626c658a0100
*00730800000000010a01030103026302000000020000000400000043000000735b0000007c0000
*6900007005000164000053017401006902006903007401006902006904007c00006905007c0100
*6906008302008301006f2000017407006401007c01006906007c00006905006602001683010082
*01006e0100016400005328020000004e7332000000257220616c72656164792065786973747320
*696e2025733b2063616e277420646f206120636865636b6f75742074686572652808000000522d
*0000005217000000521800000052190000005291000000523a00000074030000006b6579520600
*000028020000005253000000528900000028000000002800000000734c000000433a5c7461686f
*652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c73657475
*70746f6f6c735c636f6d6d616e645c656173795f696e7374616c6c2e7079740e00000063686563
*6b5f6564697461626c6592010000730c00000000010a0105022801030103016303000000070000
*00090000004300000073b80100007400006901006401006402008300017d03006400007d04007c
*0000690300700e00017c0000690400830000016e0100017a5f017405007c010074060083020070
*9300017407007c01008301006f3c00017c00006908007c0100830100017c0000690900690a007c
*01007c03008302007d04007c0000690b006400007c04007c03007c0200740c008305005301740d
*00690e00690f007c01008301006f2700017c00006908007c0100830100017c0000690b00640000
*7c01007c03007c0200740c0083050053017410007c01008301007d01006e0100017c0000691100
*7c0100830100017c00006909006912007c01007c03007c00006913007c00006903007c00006914
*000c8305007d05007c05006400006a08006f3200016403007c0100167d06007c00006914006f0e
*00017c0600640400377d06006e0100017415007c06008301008201006e4500017c050069160074
*17006a02006f1b00017c00006918007c01007c05007c0200640500830400017c050053017c0000
*690b007c01007c05006919007c03007c02008304005357640000740d00690e00690f007c030083
*01006f0e0001741a007c0300830100016e010001586400005328060000004e5243000000730d00
*0000656173795f696e7374616c6c2d732b000000436f756c64206e6f742066696e642073756974
*61626c6520646973747269627574696f6e20666f72202572733200000020282d2d616c77617973
*2d636f707920736b6970732073797374656d20616e6420646576656c6f706d656e742065676773
*2974050000005573696e67281b000000740800000074656d7066696c6574070000006d6b647465
*6d705232000000522d000000740f000000696e7374616c6c5f736974655f70795276000000740b
*000000526571756972656d656e74520c00000052bf00000052450000007408000000646f776e6c
*6f6164740c000000696e7374616c6c5f6974656d529d0000005217000000521800000052190000
*00741500000070617273655f726571756972656d656e745f61726752c100000074120000006665
*7463685f646973747269627574696f6e5220000000523e0000005208000000740a000000707265
*636564656e6365740c000000444556454c4f505f44495354741400000070726f636573735f6469
*73747269627574696f6e74080000006c6f636174696f6e52590000002807000000525300000052
*890000007404000000646570737406000000746d7064697252c700000052b700000052a3000000
*28000000002800000000734c000000433a5c7461686f652d6c6166735c7365747570746f6f6c73
*2d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c6561
*73795f696e7374616c6c2e70795211000000a101000073380000000001120106010a000e020301
*10010d020d0115011a0213020d011a0210020d0109011f030d010a010a010e0110011002160105
*021d0313016306000000080000000700000043000000739a0100007c0500700700017c00006900
*007d05007c0500701600017401006902006903007c02008301007c03006a02007d05007c050070
*0e00017c02006904006401008301000c7d05007c0500703500017c00006905006400006a09006f
*2500017401006902006903007407007c02008301008301007407007c00006905008301006a0200
*7d05007c01006f4200017c05000c6f3a00017837007c00006908007c010069090019445d1b007d
*06007c0600690a007c02006a02006f0500015071a4000171a40057740b007d05006e010001740c
*00690d00640200740100690200690e007c0200830100830200017c05006f3d00017c0000690f00
*7c01007c02007c03008303007d0700785a007c0700445d19007d06007c00006910007c01007c06
*007c040083030001710c01576e3600017c00006911007c00006912007c02008301008301006701
*007d07007c00006910007c01007c0700640300197c0400640400830400017c01006400006a0900
*6f2700017824007c0700445d18007d06007c06007c01006a06006f0500017c0600530171760157
*6e0100016400005328050000004e73040000002e656767730d00000050726f63657373696e6720
*2573690000000052c20000002813000000523e0000005217000000521800000052ae0000007408
*000000656e6473776974685247000000523200000052670000005275000000740c00000070726f
*6a6563745f6e616d6552ce000000529d0000005203000000525600000052af000000740c000000
*696e7374616c6c5f6567677352cd000000740f000000636865636b5f636f6e666c696374737410
*0000006567675f646973747269627574696f6e28080000005253000000528900000052c7000000
*52d000000052cf000000740e000000696e7374616c6c5f6e656564656452b70000007405000000
*646973747328000000002800000000734c000000433a5c7461686f652d6c6166735c7365747570
*746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d61
*6e645c656173795f696e7374616c6c2e707952c8000000ca0100007334000000000310011f0117
*0107011001150112030f0311000601100109020a021c0207011501070006011b021b011a020d01
*070006010d01630400000008000000080000004700000073230200007c00006900007c02008301
*00017c00006901006902007c0200830100017c00006903006902007c0200830100017c00006904
*007c0200830100017c02007c00006905007c02006906003c7407006908007c00006909007c0100
*7c02007c04008c0200830100017c0200690a006401008301006f1d00017c0000690100690b007c
*0200690c00640100830100830100016e0100017c03000c6f1000017c0000690d000c6f05000164
*000053017c01006400006a09006f2800017c02006906007c01006906006a03006f150001740700
*690f006402007c02008302000164000053017c01006400006a0800700d00017c02007c01006a07
*006f3800017c02006910008300007d05007c0100700400017c05007d01007411007c0500691200
*7c05006913007c01006914008303007d01006e0100017407006908006403007c01008302000179
*28007415006700008301006916007c01006701007c00006903007c00006917008303007d060057
*6e4f00047418006a0a006f1c0001017d0700017419006404007c0700691a00168301008201006e
*29000104741b006a0a006f1c0001017d0700017419006405007c0700691a00168301008201006e
*020001587c0000690d00700a00017c0000691c006f3f0001783c007c0600445d30007d02007c02
*006906007c00006905006a07006f1700017c00006917007c02006910008300008301000171d701
*0171d701576e0100017407006908006406007c0100830200016400005328070000004e73140000
*00646570656e64656e63795f6c696e6b732e747874731c000000536b697070696e672064657065
*6e64656e6369657320666f72202573731e00000050726f63657373696e6720646570656e64656e
*6369657320666f722025737327000000436f756c64206e6f742066696e64207265717569726564
*20646973747269627574696f6e2025737337000000496e7374616c6c6564206469737472696275
*74696f6e20257320636f6e666c69637473207769746820726571756972656d656e742025737327
*00000046696e69736865642070726f63657373696e6720646570656e64656e6369657320666f72
*202573281d000000740a0000007570646174655f70746852450000007403000000616464527500
*000052b9000000524b00000052c0000000520300000052560000007413000000696e7374616c6c
*6174696f6e5f7265706f7274740c0000006861735f6d6574616461746152790000007412000000
*6765745f6d657461646174615f6c696e6573523e0000005232000000526e000000740e00000061
*735f726571756972656d656e7452c600000052d200000074050000007370656373740600000065
*7874726173740a000000576f726b696e6753657474070000007265736f6c766552110000007414
*000000446973747269627574696f6e4e6f74466f756e645208000000523b000000740f00000056
*657273696f6e436f6e666c696374524700000028080000005253000000740b0000007265717569
*72656d656e7452b700000052cf0000005256000000740700000064697374726571740700000064
*697374726f73522e00000028000000002800000000734c000000433a5c7461686f652d6c616673
*5c7365747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c73
*5c636f6d6d616e645c656173795f696e7374616c6c2e707952cd000000f3010000734800000000
*010d01100110010d0110011c01100109011402130105012001100105011a020c010d0103011c02
*100103010c011c02100103011402100103010301120214020700060113011f0163020000000200
*0000020000004300000073470000007c00006900006400006a09006f0900017c00006900000c53
*017c01006902006401008301006f05000174030053017c01006902006402008301007005000174
*030053017404005328030000004e730c0000006e6f742d7a69702d7361666573080000007a6970
*2d7361666528050000005233000000523200000052db000000529d000000524c00000028020000
*00525300000052b700000028000000002800000000734c000000433a5c7461686f652d6c616673
*5c7365747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c73
*5c636f6d6d616e645c656173795f696e7374616c6c2e7079740c00000073686f756c645f756e7a
*69701f020000730e00000000011001090110010501100105016304000000060000000500000043
*00000073100100007400006901006902007c00006903007c01006904008302007d040074000069
*01006905007c04008301006f2100017406006907006401007c01006904007c00006903007c0300
*830400017c030053017400006901006908007c02008301006f0a00017c02007d03006e87000174
*00006901006909007c02008301007c03006a02006f110001740000690a007c0200830100016e01
*0001740000690b007c03008301007d0500740c007c05008301006402006a02006f3a0001740000
*6901006902007c03007c0500640300198302007d02007400006901006908007c02008301006f0a
*00017c02007d030071f200016e010001740d007c040083010001740e00690f007c03007c040083
*0200017c04005328040000004e733c000000257220616c72656164792065786973747320696e20
*25733b206275696c64206469726563746f72792025732077696c6c206e6f74206265206b657074
*690100000069000000002810000000521700000052180000005291000000523a00000052c00000
*0052190000005203000000526e000000525800000052ae000000525a00000074070000006c6973
*7464697252830000007410000000656e737572655f6469726563746f7279740600000073687574
*696c74040000006d6f7665280600000052530000005289000000740d000000646973745f66696c
*656e616d65740a00000073657475705f6261736574030000006473747408000000636f6e74656e
*747328000000002800000000734c000000433a5c7461686f652d6c6166735c7365747570746f6f
*6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c
*656173795f696e7374616c6c2e7079740a0000006d617962655f6d6f7665280200007324000000
*00011b011301060103011302050113010a02190111010f011301190113020e010a001001630200
*000003000000030000004300000073360000007c0000690000702800017825007401007c010083
*0100445d13007d02007c00006902007c02008c000001711700576e010001640000532801000000
*4e28030000005237000000740f0000006765745f7363726970745f61726773740c000000777269
*74655f7363726970742803000000525300000052b7000000523b00000028000000002800000000
*734c000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36633134646576
*6465762e6567675c7365747570746f6f6c735c636f6d6d616e645c656173795f696e7374616c6c
*2e707952b60000003e020000730800000000010a010d0006016305000000070000000400000043
*00000073830000007400007c01006901008300008301007d05007402007c03007c02008302007d
*06007c06006f2200017c04006f1b00017403007c030083010064010074040083000016177d0300
*6e2300017c06006f1b00017403007c030083010064020074040083000016177d03006e0100017c
*00006905007c02007c030064030083030001640400532805000000732f00000047656e65726174
*652061206c656761637920736372697074207772617070657220616e6420696e7374616c6c2069
*7473b80000002320454153592d494e5354414c4c2d4445562d5343524950543a20252873706563
*29722c25287363726970745f6e616d6529720a5f5f72657175697265735f5f203d202528737065
*6329720a66726f6d20706b675f7265736f757263657320696d706f727420726571756972653b20
*72657175697265282528737065632972290a64656c20726571756972650a5f5f66696c655f5f20
*3d2025286465765f7061746829720a6578656366696c65285f5f66696c655f5f290a7391000000
*2320454153592d494e5354414c4c2d5343524950543a2025287370656329722c25287363726970
*745f6e616d6529720a5f5f72657175697265735f5f203d2025287370656329720a696d706f7274
*20706b675f7265736f75726365730a706b675f7265736f75726365732e72756e5f736372697074
*2825287370656329722c2025287363726970745f6e616d652972290a52290000004e2806000000
*740300000073747252dd000000741000000069735f707974686f6e5f7363726970747411000000
*6765745f7363726970745f68656164657274060000006c6f63616c7352f2000000280700000052
*5300000052b700000052b8000000740b0000007363726970745f7465787474080000006465765f
*706174685289000000740900000069735f73637269707428000000002800000000734c00000043
*3a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567
*675c7365747570746f6f6c735c636f6d6d616e645c656173795f696e7374616c6c2e707952b400
*0000450200007316000000000212010f020e01090103060f010701090103040f01740100000074
*630500000009000000070000004300000073c80000007c0000690000670000047d05007c040044
*5d1f007d06007c05007401006902006903007c00006904007c0600830200127111007e05008301
*00017405006906006401007c01007c0000690400830300017401006902006903007c0000690400
*7c01008302007d07007c00006907007c0700830100017c0000690800704500017409007c070083
*010001740a007c07006402007c0300178302007d08007c0800690b007c0200830100017c080069
*0c0083000001740d007c0700640300830200016e01000164040053280500000073310000005772
*69746520616e2065786563757461626c652066696c6520746f2074686520736372697074732064
*69726563746f7279731a000000496e7374616c6c696e672025732073637269707420746f202573
*529400000069ed0100004e280e000000525d000000521700000052180000005291000000523600
*00005203000000525600000052be000000525700000052e9000000529800000052a70000005299
*000000740500000063686d6f642809000000525300000052b800000052ef00000074040000006d
*6f6465525b000000527d0000005224000000740600000074617267657452270000002800000000
*2800000000734c000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663
*31346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c656173795f696e
*7374616c6c2e707952f20000005c0200007316000000000206013401160118010d020a010a0113
*010d010a01630400000007000000050000004300000073e80100007c0200690000830000690100
*6401008301006f1400017c00006902007c02007c030083020067010053017c0200690000830000
*6901006402008301006f1400017c00006903007c02007c030083020067010053017c03007d0400
*7404006905006906007c02008301006f2800017c02006901006403008301000c6f170001740700
*7c02007c03007c0000690800830300016e2a00017404006905006909007c02008301006f160001
*740400690500690a007c02008301007d04006e0100017c0400690b007c03008301006f3000017c
*0000690c006f2600017c01006400006a09006f1900017c0000690e007c01007c02007c04008303
*007d04006e010001740400690500690f007c04006404008302007d05007404006905006910007c
*050083010070860001741100740400690500690f007c04006405006404008303008301007d0600
*7c060070200001741200640600740400690500690a007c0200830100168301008201006e010001
*7413007c06008301006407006a04006f200001741200640800740400690500690a007c02008301
*00168301008201006e0100017c0600640900197d05006e0100017c00006914006f1e0001741500
*6916007c00006917007c01007c05008302008301000167000053017c00006918007c05007c0400
*8302005364000053280a0000004e73040000002e65676773040000002e65786573030000002e70
*79730800000073657475702e7079520f0000007322000000436f756c646e27742066696e642061
*2073657475702073637269707420696e2025736901000000731c0000004d756c7469706c652073
*65747570207363726970747320696e2025736900000000281900000052aa00000052d100000074
*0b000000696e7374616c6c5f656767740b000000696e7374616c6c5f6578655217000000521800
*00007406000000697366696c655209000000740f000000756e7061636b5f70726f677265737352
*58000000740700000061627370617468740a00000073746172747377697468523a000000523200
*000052f000000052910000005219000000520000000052080000005283000000522d0000005203
*0000005256000000740f0000007265706f72745f6564697461626c6574110000006275696c645f
*616e645f696e7374616c6c28070000005253000000528900000052ec00000052d000000052ed00
*0000740c00000073657475705f7363726970747406000000736574757073280000000028000000
*00734c000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465
*766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c656173795f696e7374616c
*6c2e707952d30000006e0200007334000000000216011401160114030601240117011301160210
*0117021903150213011e01070103011d02130103011d020e030a01190105026302000000030000
*000500000043000000735d0000007400006901006902007c01008301006f2200017403007c0100
*7400006901006904007c01006401008302008302007d02006e1600017405007406006907007c01
*008301008301007d02007408006909007c01006402007c02008301015328030000004e73080000
*004547472d494e464f74080000006d65746164617461280a000000521700000052180000005258
*000000740c000000506174684d657461646174615291000000740b0000004567674d6574616461
*746174090000007a6970696d706f7274740b0000007a6970696d706f72746572740c0000004469
*73747269627574696f6e740d00000066726f6d5f66696c656e616d652803000000525300000074
*080000006567675f70617468520801000028000000002800000000734c000000433a5c7461686f
*652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c73657475
*70746f6f6c735c636f6d6d616e645c656173795f696e7374616c6c2e707952d500000097020000
*730800000000011301220215016303000000070000000700000043000000730602000074000069
*01006902007c00006903007400006901006904007c01008301008302007d030074000069010069
*05007c03008301007d03007c0000690600700e00017407007c0300830100016e0100017c000069
*08007c01008301007d04007c00006909007c040083010001740a007c01007c0300830200707201
*01740000690100690b007c03008301006f2e0001740000690100690c007c03008301000c6f1a00
*01740d00690e007c03006401007c0000690600830101016e350001740000690100690f007c0300
*8301006f2100017c00006910007400006911007c03006601006402007c030017830300016e0100
*017412007c030083010001740000690100690b007c01008301006f3800017c01006913007c0200
*8301006f140001741400691500640300027d05007d060071a90101741400691600640400027d05
*007d06006e6600017c00006917007c04008301006f2100017c00006918007c0300830100017c00
*00691900640500027d05007d06006e3500017c01006913007c02008301006f1400017414006915
*00640300027d05007d06006e110001741400691a00640400027d05007d06007c00006910007c05
*007c01007c03006602007c0600640600177400006901006904007c010083010074000069010069
*1b007c030083010066020016830300016e0100017c0000691c007c0300830100017c0000690800
*7c03008301005328070000004e5257000000730900000052656d6f76696e672074060000004d6f
*76696e677407000000436f7079696e67740a00000045787472616374696e677309000000202573
*20746f202573281d000000521700000052180000005291000000523500000052af000000520201
*0000525700000052e900000052d500000052d40000005210000000525800000052550000005204
*000000740b00000072656d6f76655f7472656552190000005286000000525a000000740e000000
*756e63616368655f7a6970646972520301000052ea00000052eb0000007408000000636f707974
*72656552e700000074060000006d6b706174687412000000756e7061636b5f616e645f636f6d70
*696c657405000000636f70793252ae00000052be00000028070000005253000000520f01000052
*d0000000740b00000064657374696e6174696f6e52b70000005227000000521f00000028000000
*002800000000734c000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36
*6331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c656173795f69
*6e7374616c6c2e707952fe0000009e02000073360000000001240112010a010e020f010d011001
*27011a01130121010a01130110011402140110010d011401100114021002120107012a020d0163
*030000000f0000000b0000004300000073080200007400007c01008301007d03007c0300640000
*6a08006f1400017402006401007c0100168301008201006e0100017403006400006402007c0300
*6904006403006404008302006405007c0300690400640300640500830200640600640700830103
*7d04007405006906006907007c02007c040069080083000064080017830200047d05007c04005f
*09007c0500640900177d06007405006906006907007c0600640a008302007d0700740500690600
*6907007c0700640b008302007d0800740a007c080083010001740b007c06007c07008302007c04
*005f0c007c0000690d007c01007c060083020001740500690600690e007c080083010070840001
*740f007c0800640c008302007d09007c0900691000640d00830100017857007c03006911006403
*00830100445d46005c02007d0a007d0b007c0a00640e006a03006f2d00017c0900691000640f00
*7c0a006912006410006411008302006913008300007c0b00660200168301000171280101712801
*577c0900691400830000016e0100017405006906006907007c07006412008302007d0c007c0000
*691500670000047d0d007416007c0400830100445d20007d0e007c0d007405006906006907007c
*0c007c0e00641300198302001271ac017e0d00830100017417006918007c05007c06006414007c
*00006919006415007c0000691a00830202017c0000691b007c05007c0200830200532816000000
*4e73280000002573206973206e6f7420612076616c696420646973747574696c732057696e646f
*7773202e65786552d2000000520801000052a9000000740700000076657273696f6e7408000000
*706c6174666f726d740500000077696e333273040000002e65676773040000002e746d70730800
*00004547472d494e464f7308000000504b472d494e464f529400000073160000004d6574616461
*74612d56657273696f6e3a20312e300a740e0000007461726765745f76657273696f6e73070000
*0025733a2025730a74010000005f74010000002d52b10000006900000000525000000052570000
*00281c000000521300000052320000005208000000520d01000074030000006765745217000000
*5218000000529100000074080000006567675f6e616d6552ce00000052e9000000520901000074
*090000005f70726f7669646572740a0000006578655f746f5f6567675219000000529800000052
*a700000074050000006974656d7374070000007265706c61636574050000007469746c65529900
*0000525d00000052f1000000520d000000740c0000006d616b655f7a697066696c655250000000
*525700000052fe000000280f000000525300000052ec00000052d0000000740300000063666752
*b7000000520f01000074070000006567675f746d70520e0000007407000000706b675f696e6652
*2700000074010000006b7401000000765236000000527d000000523b0000002800000000280000
*0000734c000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663313464
*65766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c656173795f696e737461
*6c6c2e707952ff000000c0020000733800000000020c010d0103011103090112011b0426010a01
*150115010a011201100313010f010d0110000c010d0131010e01150106013b0306011c03630300
*00000b000000090000000300000073a90100007400007c01008301008903006700008900006700
*008904006800008902008704008701008702008703008700006605006401008600007d03007401
*007c01008801007c0300830300016700007d0400789b00880400445d93007d05007c0500690200
*8300006903006402008301006f7700017c05006904006403008301007d06007c0600640400197d
*07007405006906007c060064040019830100640500177c06006404003c74070069080069090088
*01007c06008c01007d0800880000690a007c0800830100017c0400690a007c0800830100017405
*00690b007c07007c08008302000171560001715600577c0000690c008800008301000174050069
*0d00740700690800690900880100640600830200740500690e008801007c040083020083020001
*787d00640d00445d75007d0900740f008300007c0900196f610001740700690800690900880100
*6406007c0900640900178303007d0a007407006908006910007c0a00830100702e00017411007c
*0a00640a00830200691200640b00690900740f008300007c090019830100640b00178301000171
*a10101712c0101712c0157640c0053280e000000733b0000004578747261637420612062646973
*745f77696e696e737420746f20746865206469726563746f7269657320616e2065676720776f75
*6c6420757365630200000007000000070000001300000073560100007c00006900008300007d02
*00781f01880300445d17015c02007d03007d04007c02006901007c03008301006ffb00017c0400
*7c00007402007c03008301001f177d00007c00006903006401008301007d050074040069050069
*06008801007c05008c01007d01007c01006900008300007d06007c060069070064020083010070
*1000017c06006907006403008301006f4600017408006909007c0500640400198301007c050064
*04003c640500880200740400690500690a007c050064060019830100640600193c880000690b00
*7c0000830100016e4d00017c06006907006407008301006f3c00017c03006408006a03006f2f00
*01640500880200740400690500690a007c050064060019830100640600193c880400690b007c01
*00830100016e0100017c01005301711300577c000069070064090083010070140001740c00690d
*00640a007c0000830200016e01000164000053280b0000004e74010000002f73040000002e7079
*6473040000002e646c6c69ffffffff6901000000690000000073030000002e7079730800000053
*4352495054532f73040000002e70746873190000005741524e494e473a2063616e27742070726f
*63657373202573280f00000052aa00000052030100005283000000526b00000052170000005218
*000000529100000052d1000000520d000000740c00000073747269705f6d6f64756c6574080000
*0073706c6974657874526f0000005203000000526e000000523200000028070000007403000000
*73726352ee000000522300000074030000006f6c6474030000006e657774050000007061727473
*7402000000646c2805000000740b0000006e61746976655f6c6962735229010000740900000074
*6f705f6c6576656c74080000007072656669786573740a000000746f5f636f6d70696c65280000
*0000734c000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663313464
*65766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c656173795f696e737461
*6c6c2e7079740700000070726f63657373f0020000732600000000010c0107000c01100114010f
*0115010c01200117011e0111011d011e01110109011001140173040000002e707964522d010000
*69ffffffff73030000002e707973080000004547472d494e464f52360100005235010000730400
*00002e747874529400000073010000000a4e28020000007309000000746f705f6c6576656c730b
*0000006e61746976655f6c69627328130000005215000000520900000052aa00000052d1000000
*526b000000520d000000522e010000521700000052180000005291000000526f000000740a0000
*0077726974655f73747562740c000000627974655f636f6d70696c65741100000077726974655f
*7361666574795f666c6167740b000000616e616c797a655f65676752f600000052190000005298
*00000052a7000000280b000000525300000052ec00000052290100005239010000740500000073
*747562737403000000726573523301000074080000007265736f75726365740600000070796669
*6c6552a90000007403000000747874280000000028050000005238010000522901000052360100
*0052370100005235010000734c000000433a5c7461686f652d6c6166735c7365747570746f6f6c
*732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c65
*6173795f696e7374616c6c2e70795223010000e9020000733400000000030c010601060106011b
*14100106010700060116010f010a011b0115010d000d0118010d0118011302070006010e011c01
*13016302000000110000000c0000004300000073b60100007c0100536401006402006b00006c01
*007d02006c02007d0300016401006403006b03006c03007d0400016700007d0500740400690500
*7c01006906006404008301008301007d060068020064050064060036640500640700367d070078
*24007c0300830000445d19005c03007d08007d09007d0a006405007c07007c08003c7166005778
*11017407007c00006908006701007c000069090017830100445df6005c02007d0b007d0c0078e7
*007c0c00445ddf007d0d00740a00690b00690c007c0d008301005c02007d0e007d08007c0e007c
*06006a06006fb400017c0800706f0001791f007c02007c0e007c0b006701008302005c03007d0f
*007d0d007d1000576e160004740d006a0a006f0a000101010171b000718b0101587c0f006f0e00
*017c0f00690e00830000016e0100017c0d007c05006a07006f1100017c0500690f007c0d008301
*0001718b0101718f01017c08007c07006a06006f2d00017c0e006408006a03006f2000017c0500
*690f00740a00690b006910007c0b007c0d0083020083010001718f010171b0000171b00057719d
*00577c05006f1400017c00006911007c01007c0500830200016e0100017c010053280900000073
*39000000566572696679207468617420746865726520617265206e6f20636f6e666c696374696e
*6720226f6c642d7374796c6522207061636b6167657369ffffffff2802000000740b0000006669
*6e645f6d6f64756c65740c0000006765745f737566666978657328010000005200000000730d00
*0000746f705f6c6576656c2e747874690100000073040000002e70796373040000002e70796f74
*040000007369746528120000007403000000696d70524301000052440100005200000000740400
*000064696374740800000066726f6d6b657973740d0000005f6765745f6d65746164617461740c
*000000657870616e645f70617468735235000000526a00000052170000005218000000522f0100
*00740b000000496d706f72744572726f725299000000526f0000005291000000740f000000666f
*756e645f636f6e666c696374732811000000525300000052b70000005243010000524401000052
*00000000525b00000074050000006e616d6573740400000065787473740300000065787452fc00
*00007403000000747970521800000052bd000000525c00000052bb000000522700000074050000
*00646573637228000000002800000000734c000000433a5c7461686f652d6c6166735c73657475
*70746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d
*616e645c656173795f696e7374616c6c2e707952d400000018030000733a000000000304011601
*10020601180214010a000f010e021a000c010700060118010d01070203011f010e01080207000e
*010d0115011a012c0107011402630300000004000000030000004300000073a60000007c000069
*00006f1b0001740100690200640100830100017c00006903007c02008301005301640200640300
*6904007c0200830100167d03007c00006905006f1500017c03006404007c010069060016377d03
*006e0b00017c0300640500377d03007c0300640600377d03007407006908006909007c03008301
*0001740700690800690a00830000017c000069050070100001740b006407008301008201006e01
*00016400005328080000004e732a000000417474656d7074696e6720746f2064656c6574652063
*6f6e666c696374696e67207061636b616765733a73850100002d2d2d2d2d2d2d2d2d2d2d2d2d2d
*2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d
*2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a434f4e464c494354205741524e494e473a0a
*0a54686520666f6c6c6f77696e67206d6f64756c6573206f72207061636b616765732068617665
*207468652073616d65206e616d6573206173206d6f64756c6573206f720a7061636b6167657320
*6265696e6720696e7374616c6c65642c20616e642077696c6c206265202a6265666f72652a2074
*686520696e7374616c6c6564207061636b6167657320696e0a507974686f6e2773207365617263
*6820706174682e2020596f75204d5553542072656d6f766520616c6c206f66207468652072656c
*6576616e742066696c657320616e640a6469726563746f72696573206265666f726520796f7520
*77696c6c2062652061626c6520746f2075736520746865207061636b61676528732920796f7520
*6172650a696e7374616c6c696e673a0a0a20202025730a0a73040000000a202020738800000028
*4e6f74653a20796f752063616e2072756e2045617379496e7374616c6c206f6e20272573272077
*697468207468650a2d2d64656c6574652d636f6e666c696374696e67206f7074696f6e20746f20
*617474656d70742064656c6574696f6e206f66207468652061626f76652066696c65730a616e64
*2f6f72206469726563746f726965732e290a734c0100004e6f74653a20796f752063616e206174
*74656d7074207468697320696e7374616c6c6174696f6e20616761696e20776974682045617379
*496e7374616c6c2c20616e64207573650a65697468657220746865202d2d64656c6574652d636f
*6e666c696374696e6720282d4429206f7074696f6e206f72207468650a2d2d69676e6f72652d63
*6f6e666c696374732d61742d6d792d7269736b206f7074696f6e2c20746f206569746865722064
*656c657465207468652061626f76652066696c65730a616e64206469726563746f726965732c20
*6f7220746f2069676e6f72652074686520636f6e666c696374732c20726573706563746976656c
*792e20204e6f746520746861742069660a796f752069676e6f72652074686520636f6e666c6963
*74732c2074686520696e7374616c6c6564207061636b616765287329206d6179206e6f7420776f
*726b2e0a734a0000002d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d
*2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d
*2d2d2d2d0a7325000000496e7374616c6c6174696f6e2061626f727465642064756520746f2063
*6f6e666c69637473280c00000052480000005203000000526e000000525d000000529100000052
*4900000052d20000005268000000740600000073746465727252a70000007405000000666c7573
*6852080000002804000000525300000052b7000000525b00000052a30000002800000000280000
*0000734c000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663313464
*65766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c656173795f696e737461
*6c6c2e7079524c0100003b030000731e00000000010a010d010e0e13020a010304120203060701
*0302070110010d010a017409000000496e7374616c6c6564630400000009000000040000004300
*0000737f0000006401007d04007c00006900006f4300017c00006901000c6f3800017c04006402
*00377d04007c00006902007403007404007405006906008302006a07006f0e00017c0400640300
*377d0400715300016e0100017c02006907007d05007c02006908007d06007c02006909007d0700
*6404007d08007c0400740a0083000016532805000000733900000048656c7066756c20696e7374
*616c6c6174696f6e206d65737361676520666f7220646973706c617920746f207061636b616765
*207573657273731e0000000a25287768617429732025286567676c6f6329732528657874726173
*297373e90100000a0a42656361757365207468697320646973747269627574696f6e2077617320
*696e7374616c6c6564202d2d6d756c74692d76657273696f6e2c206265666f726520796f752063
*616e0a696d706f7274206d6f64756c65732066726f6d2074686973207061636b61676520696e20
*616e206170706c69636174696f6e2c20796f752077696c6c206e65656420746f0a27696d706f72
*7420706b675f7265736f75726365732720616e64207468656e2075736520612027726571756972
*652829272063616c6c2073696d696c617220746f206f6e65206f660a7468657365206578616d70
*6c65732c20696e206f7264657220746f2073656c65637420746865206465736972656420766572
*73696f6e3a0a0a20202020706b675f7265736f75726365732e72657175697265282225286e616d
*6529732229202023206c617465737420696e7374616c6c65642076657273696f6e0a2020202070
*6b675f7265736f75726365732e72657175697265282225286e616d6529733d3d25287665727369
*6f6e2973222920202320746869732065786163742076657273696f6e0a20202020706b675f7265
*736f75726365732e72657175697265282225286e616d6529733e3d252876657273696f6e297322
*2920202320746869732076657273696f6e206f72206869676865720a73d60000000a0a4e6f7465
*20616c736f20746861742074686520696e7374616c6c6174696f6e206469726563746f7279206d
*757374206265206f6e207379732e706174682061742072756e74696d6520666f720a7468697320
*746f20776f726b2e202028652e672e206279206265696e6720746865206170706c69636174696f
*6e277320736372697074206469726563746f72792c206279206265696e67206f6e0a505954484f
*4e504154482c206f72206279206265696e6720616464656420746f207379732e70617468206279
*20796f757220636f64652e290a7400000000280b000000523f0000005244000000523500000052
*6600000052670000005268000000521800000052ce00000052d2000000521a01000052f6000000
*28090000005253000000740300000072657152b700000074040000007768617452a30000007406
*0000006567676c6f6352a9000000521a01000052df00000028000000002800000000734c000000
*433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e65
*67675c7365747570746f6f6c735c636f6d6d616e645c656173795f696e7374616c6c2e707952da
*000000640300007318000000000206011501030a07011c0103050f010901090109010601630300
*000005000000020000004300000073260000007400006901006902007c02008301007d03007403
*006904007d0400640100740500830000165328020000004e73220100000a457874726163746564
*206564697461626c652076657273696f6e206f6620252873706563297320746f2025286469726e
*616d6529730a0a49662069742075736573207365747570746f6f6c7320696e2069747320736574
*7570207363726970742c20796f752063616e20616374697661746520697420696e0a2264657665
*6c6f706d656e7422206d6f646520627920676f696e6720746f2074686174206469726563746f72
*7920616e642072756e6e696e673a3a0a0a202020202528707974686f6e29732073657475702e70
*7920646576656c6f700a0a53656520746865207365747570746f6f6c7320646f63756d656e7461
*74696f6e20666f72207468652022646576656c6f702220636f6d6d616e6420666f72206d6f7265
*20696e666f2e0a28060000005217000000521800000052ae000000526800000052a800000052f6
*000000280500000052530000005289000000520601000052ae0000007406000000707974686f6e
*28000000002800000000734c000000433a5c7461686f652d6c6166735c7365747570746f6f6c73
*2d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c6561
*73795f696e7374616c6c2e70795204010000800300007306000000000112010909630400000005
*0000000700000043000000731e0100007400006901006902006401007403008302000174000069
*0100690200640200740400830200017405007c03008301007d03007c00006906006403006a0400
*6f2900016404007c000069060064050018147d04007c03006907006406006407007c0400178302
*00016e2500017c00006906006403006a00006f1400017c0300690700640600640800830200016e
*0100017c00006908006f1400017c0300690700640600640900830200016e010001740900690a00
*640a007c0100740b007c0200830100640500171f640b00690c007c030083010083030001791100
*740d007c01007c030083020001576e2f0004740e006a0a006f230001017d040001740f00640c00
*7c040069100064060019660100168301008201006e0200015864000053280d0000004e731b0000
*00646973747574696c732e636f6d6d616e642e62646973745f656767731a000000646973747574
*696c732e636f6d6d616e642e6567675f696e666f6902000000522c010000690100000069000000
*00521f01000073020000002d7173020000002d6e730d00000052756e6e696e6720257320257374
*0100000020731b0000005365747570207363726970742065786974656420776974682025732811
*000000526800000074070000006d6f64756c6573740a00000073657464656661756c74520d0000
*00520e00000074040000006c697374525000000052720000005257000000520300000052560000
*00528300000052910000005202000000740a00000053797374656d457869745208000000523b00
*000028050000005253000000520601000052ed000000523b000000522c01000028000000002800
*000000734c000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36633134
*6465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c656173795f696e7374
*616c6c2e707952020000008d03000073200000000001130113020c01100111011801100114010a
*01140106012402030111011001630300000009000000090000004300000073f800000064010064
*02006702007d03007400006901006403006404006405007402006903006904007c010083010083
*00027d04007aa6007c03006905007c0400830100017c00006906007c01007c02007c0300830300
*017407007c04006701008301007d05006700007d0600783f007c0500445d37007d0700782e007c
*05007c070019445d22007d08007c06006905007c00006908007c08006909007c02008302008301
*000171800057716f00577c06000c6f1f00017c0000690a000c6f140001740b00690c006406007c
*0400830200016e0100017c06005357640000740d007c040083010001740b00690e007c0000690f
*0083010001586400005328070000004e520d000000730a0000002d2d646973742d646972524300
*0000730d0000006567672d646973742d746d702d7403000000646972732b0000004e6f20656767
*7320666f756e6420696e20257320287365747570207363726970742070726f626c656d3f292810
*00000052c300000052c40000005217000000521800000052ae000000526f000000520200000052
*7400000052fe00000052ce00000052570000005203000000526e00000052590000005282000000
*525000000028090000005253000000520601000052ed000000523b000000740800000064697374
*5f6469727408000000616c6c5f6567677374040000006567677352c000000052b7000000280000
*00002800000000734c000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e
*366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c656173795f
*696e7374616c6c2e70795205010000a1030000732600000000010c0109011b0203010d0113010f
*010601070006010b0006012401130109010b0108020a0163020000000500000005000000430000
*0073c50100007c00006900006400006a08006f05000164000053017883007c00006900007c0100
*69020019445d71007d02007c0000690300701300017c02006904007c01006904006a03006f4e00
*017405006906006401007c0200830200017c00006900006907007c0200830100017c0200690400
*7c00006908006a06006f1700017c00006908006907007c02006904008301000171970001712600
*01712600577c0000690300707800017c01006904007c00006900006909006a06006f1400017405
*006906006402007c010083020001711d01017405006906006403007c0100830200017c00006900
*00690a007c0100830100017c01006904007c00006908006a07006f1700017c0000690800690b00
*7c010069040083010001711d01016e0100017c0000690c00709a00017c0000690000690d008300
*00017c01006902006404006a02006f790001740e00690f006910007c0000691100640500830200
*7d0300740e00690f006912007c03008301006f110001740e006913007c0300830100016e010001
*7414007c03006406008302007d04007c04006915007c00006900006916007c0100690400830100
*64070017830100017c04006917008300000171c101016e0100016400005328080000004e732600
*000052656d6f76696e672025732066726f6d20656173792d696e7374616c6c2e7074682066696c
*657334000000257320697320616c726561647920746865206163746976652076657273696f6e20
*696e20656173792d696e7374616c6c2e7074687322000000416464696e6720257320746f206561
*73792d696e7374616c6c2e7074682066696c65740a0000007365747570746f6f6c73730e000000
*7365747570746f6f6c732e7074687402000000777473010000000a281800000052460000005232
*00000052c0000000523f00000052ce00000052030000005256000000740600000072656d6f7665
*52710000007405000000706174687352d9000000526f0000005257000000740400000073617665
*52170000005218000000529100000052350000005255000000525a000000529800000052a70000
*00740d0000006d616b655f72656c617469766552990000002805000000525300000052b7000000
*5222000000525c000000522700000028000000002800000000734c000000433a5c7461686f652d
*6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c736574757074
*6f6f6c735c636f6d6d616e645c656173795f696e7374616c6c2e707952d8000000b60300007336
*000000000110010502110006011d011001100113011f020a011601060103010b03100110011301
*1b020a020d0210031801130011010f012001630300000003000000040000004300000073170000
*007400006901006401007c01007c0200830300017c02005328020000004e7312000000556e7061
*636b696e6720257320746f20257328020000005203000000740500000064656275672803000000
*5253000000523001000052ee00000028000000002800000000734c000000433a5c7461686f652d
*6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c736574757074
*6f6f6c735c636f6d6d616e645c656173795f696e7374616c6c2e70795201010000da0300007304
*000000000213016303000000060000000500000003000000738c00000067000089000067000089
*02008700008701008702006603006401008600007d03007400007c01007c02007c030083030001
*8801006901008800008301000188010069020070400001783d00880200445d31007d0400740300
*6904007c04008301007404006905001964020042640300407d05007406007c04007c0500830200
*01714f00576e0100016400005328040000004e6302000000020000000300000013000000739600
*00007c01006900006401008301006f2f00017c00006901006402008301000c6f1e000188000069
*02007c0100830100018802006902007c0100830100016e3200017c010069000064030083010070
*1000017c01006900006404008301006f1100018802006902007c0100830100016e010001880100
*6903007c00007c0100830200018801006904000c6f0700017c0100700400016400005328050000
*004e73030000002e707973090000004547472d494e464f2f73040000002e646c6c73030000002e
*736f280600000052d10000005203010000526f0000005201010000525700000052320000002802
*000000523001000052ee0000002803000000523801000052530000007408000000746f5f63686d
*6f642800000000734c000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e
*366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c656173795f
*696e7374616c6c2e707974020000007066e2030000730e000000000121010d0111012001110110
*01696d01000069ed0f000028070000005209000000523b01000052570000005217000000740400
*000073746174740700000053545f4d4f444552fb00000028060000005253000000520f01000052
*19010000526b010000522700000052fc0000002800000000280300000052380100005253000000
*526a010000734c000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663
*31346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c656173795f696e
*7374616c6c2e70795217010000df0300007314000000000106000602150910010d010a01070006
*011e016302000000030000000c00000043000000738f0000006401006402006b00006c01007d02
*00017a67007402006903007c000069040064030018830100017c02007c01006404006405006406
*006403006407007c0000690500830103017c00006906006f2600017c02007c01006404007c0000
*6906006406006403006407007c0000690500830103016e010001576400007402006903007c0000
*69040083010001586400005328080000004e69ffffffff2801000000523b010000690100000052
*3c00000069000000007405000000666f72636552570000002807000000740e0000006469737475
*74696c732e7574696c523b0100005203000000528200000052500000005257000000523c000000
*280300000052530000005238010000523b01000028000000002800000000734c000000433a5c74
*61686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c73
*65747570746f6f6c735c636f6d6d616e645c656173795f696e7374616c6c2e7079523b010000f2
*030000731200000000011001030214021f010a0103011501120363010000000100000005000000
*4300000073200000006401007c0000690000740100690200690300640200640300830200660200
*165328040000004e731f04000062616420696e7374616c6c206469726563746f7279206f722050
*5954484f4e504154480a0a596f752061726520617474656d7074696e6720746f20696e7374616c
*6c2061207061636b61676520746f2061206469726563746f72792074686174206973206e6f740a
*6f6e20505954484f4e5041544820616e6420776869636820507974686f6e20646f6573206e6f74
*207265616420222e707468222066696c65732066726f6d2e20205468650a696e7374616c6c6174
*696f6e206469726563746f727920796f75207370656369666965642028766961202d2d696e7374
*616c6c2d6469722c202d2d7072656669782c206f720a74686520646973747574696c7320646566
*61756c742073657474696e6729207761733a0a0a2020202025730a0a616e6420796f7572205059
*54484f4e5041544820656e7669726f6e6d656e74207661726961626c652063757272656e746c79
*20636f6e7461696e733a0a0a2020202025720a0a486572652061726520736f6d65206f6620796f
*7572206f7074696f6e7320666f7220636f7272656374696e67207468652070726f626c656d3a0a
*0a2a20596f752063616e2063686f6f7365206120646966666572656e7420696e7374616c6c6174
*696f6e206469726563746f72792c20692e652e2c206f6e6520746861742069730a20206f6e2050
*5954484f4e50415448206f7220737570706f727473202e7074682066696c65730a0a2a20596f75
*2063616e206164642074686520696e7374616c6c6174696f6e206469726563746f727920746f20
*74686520505954484f4e5041544820656e7669726f6e6d656e740a20207661726961626c652e20
*20284974206d757374207468656e20616c736f206265206f6e20505954484f4e50415448207768
*656e6576657220796f752072756e0a2020507974686f6e20616e642077616e7420746f20757365
*20746865207061636b61676528732920796f752061726520696e7374616c6c696e672e290a0a2a
*20596f752063616e207365742075702074686520696e7374616c6c6174696f6e20646972656374
*6f727920746f20737570706f727420222e707468222066696c65732062790a20207573696e6720
*6f6e65206f662074686520617070726f61636865732064657363726962656420686572653a0a0a
*2020687474703a2f2f7065616b2e74656c65636f6d6d756e6974792e636f6d2f45617379496e73
*74616c6c2e68746d6c23637573746f6d2d696e7374616c6c6174696f6e2d6c6f636174696f6e73
*0a0a50726f63656564696e6720746f20696e7374616c6c2e2020506c656173652072656d656d62
*6572207468617420756e6c65737320796f75206d616b65206f6e65206f660a7468657365206368
*616e67657320796f752077696c6c206e6f742062652061626c6520746f2072756e207468652069
*6e7374616c6c656420636f64652e0a740a000000505954484f4e50415448525501000028040000
*00523500000052170000007407000000656e7669726f6e52200100002801000000525300000028
*000000002800000000734c000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d
*302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c656173
*795f696e7374616c6c2e7079529c000000080400007304000000001e0301630100000005000000
*0300000043000000731b0100007c00006900006f05000164010053017401006902006903007c00
*006904006402008302007d01007405006403006404008302007d02006405007d03007401006902
*006906007c01008301006f5000017407006908006406007c0000690400830200017409007c0100
*640700830200690a008300007d03007c0300690b0064080083010070140001740c006409007c01
*0016830100820100719f00016e0100017c03007c02006a03006f620001740700690d00640a007c
*0100830200017c0000690e0070340001740f007c0100830100017409007c0100640b008302007d
*04007c04006910007c0200830100017c0400691100830000016e0100017c00006912007c010067
*0100830100016e0100017413007c00005f000064010053280c00000073380000004d616b652073
*7572652074686572652773206120736974652e707920696e207468652074617267657420646972
*2c206966206e65656465644e7307000000736974652e70795263010000730d000000736974652d
*70617463682e70795255010000731f000000436865636b696e67206578697374696e6720736974
*652e707920696e20257374020000007262730d000000646566205f5f626f6f7428293a733b0000
*002573206973206e6f742061207365747570746f6f6c732d67656e65726174656420736974652e
*70793b20706c656173652072656d6f76652069742e730b0000004372656174696e672025737402
*00000077622814000000524d0000005217000000521800000052910000005235000000740f0000
*007265736f757263655f737472696e675219000000520300000052690100005298000000740400
*000072656164520301000052080000005256000000525700000052e900000052a7000000529900
*0000523b010000529d000000280500000052530000007406000000736974657079740600000073
*6f75726365740700000063757272656e74522700000028000000002800000000734c000000433a
*5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e656767
*5c7365747570746f6f6c735c636f6d6d616e645c656173795f696e7374616c6c2e707952c50000
*0033040000732a00000000030a01050218010f01060213011301150110010301030112030d0110
*010a010a010f010d010e0114027405000000706f7369785235000000732f00000024626173652f
*6c69622f707974686f6e2470795f76657273696f6e5f73686f72742f736974652d7061636b6167
*65735236000000730900000024626173652f62696e731700000024626173652f4c69622f736974
*652d7061636b61676573730d00000024626173652f536372697074736301000000070000000800
*00004700000073280100007c00006900006401008301006901007d02007c00006902006f820001
*7c02006903008300007d02007c00006902007c02006402003c7c00006904006905007406006907
*007c00006908008302007d0300784b007c0300690900830000445d39005c02007d04007d050074
*0a007c00007c04006400008303006400006a08006f140001740c007c00007c04007c0500830300
*01715d0001715d00576e0100016403006404006b0d006c0e007d0600017873007c0100445d6b00
*7d0400740a007c00007c04008302007d05007c05006400006a09006f4900017c06007c05007c02
*008302007d05007406006907006405006a02006f160001740600690f006910007c05008301007d
*05006e010001740c007c00007c04007c05008303000171b5000171b50057640000532806000000
*4e526000000052bb00000069ffffffff2801000000740a00000073756273745f76617273527901
*0000281100000074150000006765745f66696e616c697a65645f636f6d6d616e64740b00000063
*6f6e6669675f7661727352430000007404000000636f7079740f000000494e5354414c4c5f5343
*48454d45535220010000521700000052a9000000740e00000044454641554c545f534348454d45
*52240100007407000000676574617474725232000000740700000073657461747472526f010000
*527a0100005218000000526c0000002807000000525300000074050000006174747273527c0100
*007406000000736368656d65740400000061747472740300000076616c527a0100002800000000
*2800000000734c000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663
*31346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c656173795f696e
*7374616c6c2e70795264000000680400007324000000000112020a020c010d011b010d000c0119
*011c021001070006010f010d010f01100116014e280300000073070000007072656669783d4e73
*13000000696e7374616c6c6174696f6e20707265666978280300000073060000007a69702d6f6b
*521e000000731c000000696e7374616c6c207061636b6167652061732061207a697066696c6528
*03000000730d0000006d756c74692d76657273696f6e521f00000073250000006d616b65206170
*7073206861766520746f2072657175697265282920612076657273696f6e280300000073070000
*007570677261646552210000007331000000666f72636520757067726164652028736561726368
*6573205079504920666f72206c61746573742076657273696f6e73292803000000730c00000069
*6e7374616c6c2d6469723d52220000007316000000696e7374616c6c207061636b61676520746f
*204449522803000000730b0000007363726970742d6469723d52230000007316000000696e7374
*616c6c207363726970747320746f204449522803000000730f0000006578636c7564652d736372
*6970747352240000007315000000446f6e277420696e7374616c6c207363726970747328030000
*00730b000000616c776179732d636f707952250000007327000000436f707920616c6c206e6565
*646564207061636b6167657320746f20696e7374616c6c206469722803000000730a000000696e
*6465782d75726c3d52260000007320000000626173652055524c206f6620507974686f6e205061
*636b61676520496e6465782803000000730b00000066696e642d6c696e6b733d52270000007328
*0000006164646974696f6e616c2055524c28732920746f2073656172636820666f72207061636b
*616765732803000000731200000064656c6574652d636f6e666c696374696e6752280000007320
*0000006e6f206c6f6e676572206e65656465643b20646f6e277420757365207468697328030000
*00731b00000069676e6f72652d636f6e666c696374732d61742d6d792d7269736b4e7320000000
*6e6f206c6f6e676572206e65656465643b20646f6e277420757365207468697328030000007310
*0000006275696c642d6469726563746f72793d5229000000732f000000646f776e6c6f61642f65
*7874726163742f6275696c6420696e204449523b206b6565702074686520726573756c74732803
*00000073090000006f7074696d697a653d522a000000736c000000616c736f20636f6d70696c65
*2077697468206f7074696d697a6174696f6e3a202d4f3120666f722022707974686f6e202d4f22
*2c202d4f3220666f722022707974686f6e202d4f4f222c20616e64202d4f3020746f2064697361
*626c65205b64656661756c743a202d4f305d280300000073070000007265636f72643d4e733300
*000066696c656e616d6520696e20776869636820746f207265636f7264206c697374206f662069
*6e7374616c6c65642066696c65732803000000730c000000616c776179732d756e7a6970522b00
*0000732a000000646f6e277420696e7374616c6c2061732061207a697066696c652c206e6f206d
*617474657220776861742803000000730a000000736974652d646972733d522c00000073290000
*006c697374206f66206469726563746f72696573207768657265202e7074682066696c65732077
*6f726b280300000073080000006564697461626c65522e000000732b000000496e7374616c6c20
*737065636966696564207061636b6167657320696e206564697461626c6520666f726d28030000
*0073070000006e6f2d64657073522f000000731a000000646f6e277420696e7374616c6c206465
*70656e64656e636965732803000000730c000000616c6c6f772d686f7374733d52300000007324
*0000007061747465726e287329207468617420686f73746e616d6573206d757374206d61746368
*280300000073120000006c6f63616c2d736e617073686f74732d6f6b5231000000732800000061
*6c6c6f77206275696c64696e6720656767732066726f6d206c6f63616c20636865636b6f757473
*2800000000283700000074080000005f5f6e616d655f5f740a0000005f5f6d6f64756c655f5f74
*070000005f5f646f635f5f740b0000006465736372697074696f6e529d000000741a000000636f
*6d6d616e645f636f6e73756d65735f617267756d656e74735232000000740c000000757365725f
*6f7074696f6e73740f000000626f6f6c65616e5f6f7074696f6e73740c0000006e656761746976
*655f6f7074520a00000052730000005254000000525d0000005280000000528c00000052930000
*0052880000005270000000529b000000529700000052b900000052be00000052bf00000052c100
*0000524c000000521100000052c800000052cd00000052e700000052f000000052b600000052b4
*00000052f200000052d300000052d500000052fe00000052ff000000522301000052d400000052
*4c01000052da00000052040100005202000000520501000052d800000052010100005217010000
*523b010000529c00000052c50000005247010000527e010000527f010000526400000028000000
*0028000000002800000000734c000000433a5c7461686f652d6c6166735c7365747570746f6f6c
*732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c65
*6173795f696e7374616c6c2e707952110000002a000000739e0000000601060106010603030103
*010301030103010301030103010301030103010001030100010301000103020001030103010301
*03010301030109030f0109010c020d010602091f090a09520916090b0908092f09290929090a09
*080908090f0c290c290c2c0909091609070c170f120929090709220929092f092309290c1c090d
*091409150924090509130916092b09290601060106010c04060106010903630000000006000000
*0a0000004300000073e60100007400006400007402006903006904006401006402008302006905
*007402006906008301008302007d00007407006908006701007d01007407006909007407006908
*006a03006f1400017c0100690a00740700690900830100016e0100017838017c0100445d30017d
*02007c02006f230101740700690b006413006a06006f2300017c0000690a00740200690c00690d
*007c0200640500640600830300830100016e7f0001740200690e006407006a02006f4900017c00
*00690f00740200690c00690d007c0200640800640900740700691000640a002017640600830400
*740200690c00690d007c0200640800640b00830300670200830100016e2600017c0000690f007c
*0200740200690c00690d007c020064080064060083030067020083010001740700690b00640c00
*6a02006f5e0001640d007c02006a06006f4d0001740200690300690400640e008301007d03007c
*03006f3000017c0000690a00740200690c00690d007c0300640f00641000740700691000640a00
*2064060083050083010001718c010171900101719401017164000171640057783800641400445d
*30007d04007411007c04008301007d05007c05007c00006a07006f1100017c0000690a007c0500
*83010001719f0101719f01577412007413007c00008302007d00007c00005328150000004e5270
*010000525501000074060000006f7332656d787406000000726973636f7374030000004c696273
*0d000000736974652d7061636b61676573522d01000074030000006c6962525901000069030000
*00730b000000736974652d707974686f6e740600000064617277696e7310000000507974686f6e
*2e6672616d65776f726b7404000000484f4d4574070000004c6962726172797406000000507974
*686f6e69000000006901000000280200000073060000006f7332656d787306000000726973636f
*732802000000690000000069010000002814000000740600000066696c74657252320000005217
*00000052710100005220010000526b000000740700000070617468736570526800000052430000
*00740b000000657865635f707265666978526f000000521b010000521800000052910000007403
*0000007365707406000000657874656e64521a0100005205000000526600000052670000002806
*00000074080000007369746564697273523701000052430000007404000000686f6d65740d0000
*00706c61745f73706563696669637408000000736974655f6c696228000000002800000000734c
*000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465
*762e6567675c7365747570746f6f6c735c636f6d6d616e645c656173795f696e7374616c6c2e70
*79526900000085040000734400000000022a010c01130114010700060107011001230110011201
*03010e010601200206011f0210040d011201070106010c01030103010a011e01070006010c010d
*0015020f016301000000080000000600000063000000736c0100006800007d0100785f017c0000
*445d57017d02007400007c02008301007d02007c02007c01006a06006f070001710d006e010001
*6401007c01007c02003c7401006902006903007c020083010070070001710d006e010001740100
*6904007c02008301007d03007c02007c0300660200560178f0007c0300445de8007d04007c0400
*690500640200830100700700017178006e0100017c04006407006a06006f0700017178006e0100
*017406007401006902006907007c02007c04008302008301007d05007408007409007c05008301
*008301007d06007c0500690a0083000001787d007c0600445d75007d07007c0700690b00640500
*830100705f00017400007c0700690c008300008301007d07007c07007c01006a07006f3c000164
*01007c01007c07003c7401006902006903007c07008301007007000171e7006e0100017c070074
*01006904007c07008301006602005601715c010171e7000171e7005771780057710d0057640600
*53280800000073420000005969656c64207379732e70617468206469726563746f726965732074
*686174206d6967687420636f6e7461696e20226f6c642d7374796c6522207061636b6167657369
*0100000073040000002e7074687310000000656173792d696e7374616c6c2e707468730e000000
*7365747570746f6f6c732e7074687406000000696d706f72744e28020000007310000000656173
*792d696e7374616c6c2e707468730e0000007365747570746f6f6c732e707468280d0000005267
*00000052170000005218000000525800000052e800000052d10000005298000000529100000052
*5d010000740b0000007969656c645f6c696e657352990000005203010000740600000072737472
*697028080000007406000000696e7075747374040000007365656e52ae00000052bd00000052a9
*000000522700000074050000006c696e657374040000006c696e6528000000002800000000734c
*000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465
*762e6567675c7365747570746f6f6c735c636f6d6d616e645c656173795f696e7374616c6c2e70
*79524a010000ae040000733a00000000030602070006010c010d0107020a01130107020f010b02
*07000601100207010d0207031b0112010a0307000601100112010d010a01130107016301000000
*0b0000000e00000043000000738d0100007400007c00006401008302007d01007a6c0174010069
*02007c01008301007d02007c02006407006a08006f05000164070053017c0200640200197c0200
*64030019187c020064040019187d03007c03006405006a00006f05000164070053017c01006904
*007c030064050018830100016406006407006b05007d04006406006407006b06007d0500640600
*6407006b07007d06007c04006908006408007c01006909006405008301008302005c03007d0700
*7d08007d09007c07006412006a07006f05000164070053017c01006904007c03006405007c0800
*1718830100017c0600690a00680200640b00640c0036640b00640d00368301007d0a007939007c
*0a00690b007c05006906007c01006909007c0800830100690c00740d00640e00830100640f0083
*0200640e001983010083010001576e1700047c0600690e006a0a006f0800010101016407005301
*587c0a00690f006410008301000c701100017c0a00690f006411008301000c6f05000164070053
*017c0a0053576407007c01006910008300000158640700532813000000736e0000004578747261
*637420636f6e66696775726174696f6e20646174612066726f6d20612062646973745f77696e69
*6e7374202e6578650a0a2020202052657475726e73206120436f6e6669675061727365722e5261
*77436f6e6669675061727365722c206f72204e6f6e650a20202020527201000069090000006905
*0000006906000000690c00000069ffffffff4e73040000003c696969697a563412697b56341252
*55010000521a010000521d01000069000000006901000000520801000074050000005365747570
*2802000000697a563412697b5634122811000000529800000074070000007a697066696c65740b
*0000005f456e6452656344617461523200000074040000007365656b7406000000737472756374
*7408000000537472696e67494f740c000000436f6e6669675061727365727406000000756e7061
*636b5275010000740f000000526177436f6e666967506172736572740600000072656164667052
*6b000000740300000063687274050000004572726f72740b0000006861735f73656374696f6e52
*99000000280b00000052ec00000052270000007406000000656e64726563740900000070726570
*656e64656452aa01000052ab01000052ac010000740300000074616774060000006366676c656e
*7405000000626d6c656e522801000028000000002800000000734c000000433a5c7461686f652d
*6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c736574757074
*6f6f6c735c636f6d6d616e645c656173795f696e7374616c6c2e70795213000000d7040000732e
*00000000050f0103010f010d0105021a010d0105011102240124010d01050215011d0103013901
*1101060122010501080363010000000a0000000a0000004300000073db01000064170064180064
*1900641a006704007d01007400006901007c00008301007d02007a6101785a017c020069020083
*0000445d4c017d03007c03006903007d04007c04006904006407008301007d05007405007c0500
*8301006408006a02006f5100017c050064090019640a006a02006f4000017c0500640b00196906
*00640c008301006f2800017c0100690700640d006407006908007c050064090020830100640e00
*660200830200015071b300016e0100017405007c05008301006409006a0300701100017c040069
*0600640f008301000c6f0700017131006e0100017c04006906006410008301006f070001713100
*6e0100017c0500640d0019690900830000641b006a06006f710001786e00740a007c0200690b00
*7c0400830100830100445d53007d06007c0600690c00830000690d006413006407008302007d06
*007c0600690e00641400830100702500017c0100690f006415007c0500640d00197c0600660200
*166402006602008301000171220101712201577131000171310057576416007c02006910008300
*000158670000047d07007c0100445d1f005c02007d08007d09007c07007c08006911008300007c
*090066020012719b017e07007d01007c0100691200830000017c0100691300830000017c010053
*281c0000007334000000476574206578652d3e6567672070617468207472616e736c6174696f6e
*7320666f72206120676976656e202e6578652066696c657308000000505552454c49422f525501
*00007318000000504c41544c49422f707977696e33325f73797374656d33327308000000504c41
*544c49422f7308000000534352495054532f73110000004547472d494e464f2f73637269707473
*2f522d010000690300000069020000007308000000504b472d494e464f69010000007309000000
*2e6567672d696e666f690000000073090000004547472d494e464f2f73040000002e707468730a
*0000002d6e73706b672e7074687407000000505552454c49427407000000504c41544c49427301
*0000005c529f010000730600000025732f25732f4e28020000007308000000505552454c49422f
*525501000028020000007318000000504c41544c49422f707977696e33325f73797374656d3332
*525501000028020000007308000000504c41544c49422f52550100002802000000730800000053
*4352495054532f73110000004547472d494e464f2f736372697074732f280200000052b8010000
*52b9010000281400000052a701000074070000005a697046696c657408000000696e666f6c6973
*74525c000000526b000000528300000052d1000000527200000052910000007405000000757070
*657252a00100005275010000526d00000052250100005203010000526f000000529900000052aa
*0000007404000000736f7274740700000072657665727365280a000000740c0000006578655f66
*696c656e616d655237010000521e000000525600000052a9000000523301000074030000007074
*68527d000000522400000074010000007928000000002800000000734c000000433a5c7461686f
*652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c73657475
*70746f6f6c735c636f6d6d616e645c656173795f696e7374616c6c2e7079521500000000050000
*733800000000040601030109020f0103010d00060109010f012401140123010901240107011001
*07011701160006011801100135020b0133010a000a016301000000010000000500000043000000
*733e0000007911007400006901007c000083010053576e2600047402006a0a006f1a0001010101
*7403006401007c0000660100168301008201006e020001586400005328020000004e7331000000
*4e6f7420612055524c2c206578697374696e672066696c652c206f7220726571756972656d656e
*7420737065633a202572280400000052c600000074050000007061727365527b00000052080000
*002801000000528900000028000000002800000000734c000000433a5c7461686f652d6c616673
*5c7365747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c73
*5c636f6d6d616e645c656173795f696e7374616c6c2e707952c900000021050000730a00000000
*01030111010e0103016300000000000000000200000042000000734d0000006500005a01006400
*005a02006503005a04006407006401008401005a05006402008400005a06006403008400005a07
*006404008400005a08006405008400005a09006406008400005a0a005253280800000073290000
*0041202e7074682066696c65207769746820446973747269627574696f6e20706174687320696e
*206974630300000004000000060000004300000073900000007c01007c00005f00007401007402
*007c02008302007c00005f03007402007404006905006906007c00006900008301008301007c00
*005f07007c000069080083000001740900690a007c000067000064000064000083040001783000
*740c007c0000690d00830100445d1f007d03007401007c0000690e00740f007c03007410008302
*0083020001716900576400005328010000004e2811000000525c00000052660000005267000000
*529b0100005217000000521800000052ae00000074070000006261736564697274050000005f6c
*6f6164527400000074080000005f5f696e69745f5f523200000052a0010000526601000052d900
*0000741200000066696e645f646973747269627574696f6e73529d000000280400000052530000
*00525c000000529b010000521800000028000000002800000000734c000000433a5c7461686f65
*2d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c7365747570
*746f6f6c735c636f6d6d616e645c656173795f696e7374616c6c2e707952c50100002e05000073
*100000000001090012011e010a0016011000060163010000000500000005000000430000007384
*0100006700007c00005f00007401007d01007402006903007c00006904008301007d0200740500
*6906006907007c00006908008301006ff6000178f3007409007c0000690800640100830200445d
*db007d03007c0300690a006402008301006f0d0001740b007d0100714a006e0100017c0300690c
*008300007d04007c0000690000690d007c0400830100017c0400690e008300000c701600017c04
*00690e00830000690a006403008301006f070001714a006e010001740f00740500690600691000
*7c00006911007c0400830200830100047d04007c00006900006404003c7405006906006912007c
*04008301000c700d00017c04007c02006a06006f1d00017c000069000069130083000001740b00
*7c00005f1400714a006e0100016405007c02007c04003c714a00576e0100017c00006900006f15
*00017c01000c6f0d0001740b007c00005f14006e0100017831007c00006900006f2600017c0000
*69000064040019690e008300000c6f1100017c000069000069130083000001714f010157640000
*5328060000004e74020000007274529f01000074010000002369ffffffff690100000028150000
*005266010000524c00000052470100005248010000529b01000052170000005218000000520001
*0000525c00000052980000005203010000529d00000052a1010000526f000000526d0000005267
*000000529100000052c301000052190000007403000000706f7074050000006469727479280500
*00005253000000740a0000007361775f696d706f727452a301000052a501000052180000002800
*0000002800000000734c000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d30
*2e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c65617379
*5f696e7374616c6c2e707952c40100003505000073320000000001090106011201160113000601
*1001060107010c011001240107030301260221010d0109010701120212010d0103001f01630100
*000003000000040000004300000073f20000007c00006900007005000164010053016402006901
*007402007c00006903007c00006904008302008301007d01007c01006f74000174050069060064
*03007c0000690700830200016404007c0100167d0100740800690900690a007c00006907008301
*006f140001740800690b007c0000690700830100016e010001740c007c00006907006405008302
*007d02007c0200690d007c0100830100017c0200690e00830000016e3e0001740800690900690f
*007c00006907008301006f2700017405006906006406007c000069070083020001740800690b00
*7c0000690700830100016e0100017410007c00005f000064010053280700000073240000005772
*697465206368616e676564202e7074682066696c65206261636b20746f206469736b4e73010000
*000a7309000000536176696e6720257373f1000000696d706f7274207379733b207379732e5f5f
*706c656e203d206c656e287379732e70617468290a25730a696d706f7274207379733b206e6577
*3d7379732e706174685b7379732e5f5f706c656e3a5d3b2064656c207379732e706174685b7379
*732e5f5f706c656e3a5d3b20703d67657461747472287379732c275f5f656767696e7365727427
*2c6c656e286f732e656e7669726f6e2e6765742827505954484f4e50415448272c2727292e7370
*6c6974286f732e706174687365702929293b207379732e706174685b703a705d3d6e65773b2073
*79732e5f5f656767696e73657274203d20702b6c656e286e6577290a5273010000731100000044
*656c6574696e6720656d707479202573281100000052ca01000052910000005266000000526801
*0000526601000052030000005269010000525c000000521700000052180000005255000000525a
*000000529800000052a700000052990000005219000000524c0000002803000000525300000074
*0400000064617461522700000028000000002800000000734c000000433a5c7461686f652d6c61
*66735c7365747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f
*6c735c636f6d6d616e645c656173795f696e7374616c6c2e707952670100005205000073200000
*0000020a0105021e0107011302030607021601140112010d000e02160113011402630200000002
*0000000300000043000000735a0000007c01006900007c00006901006a07006f3300017c010069
*00007c00006902006a07006f2000017c00006901006903007c0100690000830100017404007c00
*005f05006e0100017406006907007c00007c010083020001640100532802000000732200000041
*64642060646973746020746f2074686520646973747269627574696f6e206d61704e2808000000
*52ce0000005266010000529b010000526f000000529d00000052ca010000527400000052d90000
*002802000000525300000052b700000028000000002800000000734c000000433a5c7461686f65
*2d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c7365747570
*746f6f6c735c636f6d6d616e645c656173795f696e7374616c6c2e707952d90000006e05000073
*080000000002260113000d016302000000020000000300000043000000734b0000007834007c01
*006900007c00006901006a06006f2000017c00006901006902007c010069000083010001740300
*7c00005f040071030001577405006902007c00007c010083020001640100532802000000732700
*000052656d6f7665206064697374602066726f6d2074686520646973747269627574696f6e206d
*61704e280600000052ce00000052660100005265010000529d00000052ca010000527400000028
*02000000525300000052b700000028000000002800000000734c000000433a5c7461686f652d6c
*6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f
*6f6c735c636f6d6d616e645c656173795f696e7374616c6c2e7079526501000074050000730a00
*000000020300130113000e01630200000007000000030000004300000073d60000007400006901
*006902007403007c01008301008301005c02007d02007d03007404007c00006905008301007d04
*007c03006701007d05007400006906006401006a02006f07000164010070070001740000690700
*7d06007879007404007c02008301007c04006a05006f6100017c02007c00006905006a02006f28
*00017c0500690800740000690900830100017c0500690a00830000017c0600690b007c05008301
*0053017400006901006902007c02008301005c02007d02007d03007c05006908007c0300830100
*0171590001577c0100536400005328020000004e522d010000280c000000521700000052180000
*00526b0000005267000000528300000052c30100007406000000616c747365705299010000526f
*000000740600000063757264697252be0100005291000000280700000052530000005218000000
*74050000006e7061746874040000006c6173747407000000626173656c656e5233010000529901
*000028000000002800000000734c000000433a5c7461686f652d6c6166735c7365747570746f6f
*6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c
*656173795f696e7374616c6c2e707952680100007b050000731a00000000011e010f0109012001
*03001301100110010a010e01180112022800000000280b00000052860100005287010000528801
*0000524c00000052ca01000052c501000052c4010000526701000052d900000052650100005268
*010000280000000028000000002800000000734c000000433a5c7461686f652d6c6166735c7365
*747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f
*6d6d616e645c656173795f696e7374616c6c2e7079521200000029050000731000000006010602
*06020c07091d091c090609076303000000080000000500000043000000731e0100006401006402
*006b00006c01007d0300017c000064030017690200830000640400197d04007c03006903007c04
*008301007d05006405007d06007c05006f2f00017c050069040064060083010070040001640500
*7d06007c06006f0e00016407007c0600177d0600716f00016e0100017c02006f0a00016408007d
*01006e0d00017405007c01008301007d0100640900740600830000167d07007407007c0700640a
*00640b00830300690800640a008301007c07006a03006f4300017c06006f3200017c0600690900
*830000690a00640c008301006f180001640d007c06006909008300006406001f177d060071fa00
*0171fe0001640d007d06006e010001740b007c01007c06008302007d0100640900740600830000
*167d07007c070053280e000000733b0000004372656174652061202321206c696e652c20676574
*74696e67206f7074696f6e732028696620616e79292066726f6d207363726970745f7465787469
*ffffffff2801000000740d00000066697273745f6c696e655f726573010000000a690000000052
*550100006901000000525a010000730a000000707974686f6e2e657865731c0000002321252865
*786563757461626c65297325286f7074696f6e7329730a74050000006173636969740600000069
*676e6f7265521f0100007303000000202d78280c000000741f000000646973747574696c732e63
*6f6d6d616e642e6275696c645f7363726970747352d2010000740a00000073706c69746c696e65
*7374050000006d61746368740500000067726f7570740c0000006e745f71756f74655f61726752
*f60000007407000000756e69636f64657406000000656e636f6465526d00000052030100007415
*0000006669785f6a7974686f6e5f65786563757461626c65280800000052f700000052a8000000
*740700000077696e696e737452d20100007405000000666972737452d701000074070000006f70
*74696f6e73740300000068647228000000002800000000734c000000433a5c7461686f652d6c61
*66735c7365747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f
*6c735c636f6d6d616e645c656173795f696e7374616c6c2e707952f50000008a05000073280000
*000002100114010f010601070116010700120107010a020c010d012202070116011c030a010f01
*0d016303000000030000000600000043000000737c0000007c00007400006901006a08006f2b00
*017400006902006401006a02006f1b00017403007c0100740400690500830200017c00007c0100
*83010053017406006907008300007d02007c0200640200197c020064030019640200197c020064
*030019640300196404007c00007c010066020016176602008202006400005328050000004e52a4
*000000690000000069010000007306000000202573202573280800000052170000005265010000
*52a900000052fb000000526c0100007408000000535f495752495445526800000052a200000028
*03000000740400000066756e637403000000617267740300000065786328000000002800000000
*734c000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36633134646576
*6465762e6567675c7365747570746f6f6c735c636f6d6d616e645c656173795f696e7374616c6c
*2e7079740a0000006175746f5f63686d6f64a4050000730a0000000001200110010b010c016301
*00000002000000040000004300000073310000006401006402006b00006c01007d010001740200
*7c00007c0100830200017402007c000074030069040083020001640300532804000000733f0000
*00456e7375726520746861742074686520696d706f727465722063616368657320646f6e742068
*617665207374616c6520696e666f20666f722060706174686069ffffffff280100000074140000
*005f7a69705f6469726563746f72795f63616368654e2805000000520b01000052e60100007408
*0000005f756e636163686552680000007413000000706174685f696d706f727465725f63616368
*652802000000521800000074030000007a646328000000002800000000734c000000433a5c7461
*686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c7365
*747570746f6f6c735c636f6d6d616e645c656173795f696e7374616c6c2e70795214010000ab05
*00007306000000000210010d01630200000003000000030000004300000073580000007c00007c
*01006a06006f0b00017c01007c00003d6e3d00017400007c00008301007d0000782d007c010044
*5d25007d02007400007c02008301007c00006a02006f0c00017c01007c02003d6400005301712b
*00576400005328010000004e280100000052670000002803000000521800000074050000006361
*63686574010000007028000000002800000000734c000000433a5c7461686f652d6c6166735c73
*65747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c63
*6f6d6d616e645c656173795f696e7374616c6c2e707952e7010000b1050000731000000000010d
*010b020c01070006011301070173080000003c737472696e673e63020000000200000007000000
*4300000073390000007914007400007c00007c010064010083030001576e1a0004740100740200
*6602006a0a006f0800010101017403005301587404005364020053280300000073250000004973
*207468697320737472696e6720612076616c696420507974686f6e207363726970743f74040000
*00657865634e28050000007407000000636f6d70696c65740b00000053796e7461784572726f72
*7409000000547970654572726f72524c000000529d000000280200000074040000007465787452
*5c00000028000000002800000000734c000000433a5c7461686f652d6c6166735c736574757074
*6f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e
*645c656173795f696e7374616c6c2e7079740900000069735f707974686f6ebb050000730a0000
*000002030114011401060263010000000300000006000000430000007350000000792900740000
*7c00008301007d01007c01006901006401008301007d02007c010069020083000001576e1a0004
*7403007404006602006a0a006f0800010101017c00005301587c02006402006a02005328030000
*00734300000044657465726d696e65206966207468652073706563696669656420657865637574
*61626c652069732061202e73682028636f6e7461696e732061202321206c696e65296902000000
*7302000000232128050000005298000000527501000052990000005296000000529a0000002803
*00000052a80000007402000000667074050000006d6167696328000000002800000000734c0000
*00433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e
*6567675c7365747570746f6f6c735c636f6d6d616e645c656173795f696e7374616c6c2e707974
*0500000069735f7368c4050000730e000000000203010c010f010e011400060163010000000500
*0000050000004300000073200100006700007d01007400007d02006401007d03006402007c0000
*6a0600700a00016403007c00006a06007d02007c02006f1100017c010069010064040083010001
*6e0100017888007c0000445d80007d04007c04006405006a02006f0e00017c0300640600377d03
*00714a00017c04006404006a02006f2300017c01006901006405007c0300640700141464080017
*830100016401007d0300714a00017c03006f1b00017c01006901006405007c0300148301000164
*01007d03006e0100017c01006901007c040083010001714a00577c03006f1500017c0100690100
*6405007c030014830100016e0100017c02006f2200017c01006901006405007c03001483010001
*7c0100690100640400830100016e0100016409006902007c010083010053280a00000073400000
*0051756f7465206120636f6d6d616e64206c696e6520617267756d656e74206163636f7264696e
*6720746f2057696e646f77732070617273696e672072756c65736900000000525a010000730100
*00000974010000002273010000005c6901000000690200000073020000005c2252550100002803
*000000524c000000526f0000005291000000280500000052e30100007406000000726573756c74
*74090000006e65656471756f746574020000006e6274010000006328000000002800000000734c
*000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465
*762e6567675c7365747570746f6f6c735c636f6d6d616e645c656173795f696e7374616c6c2e70
*7952d9010000cd050000732e0000000003060106010602190107011102070006010d010e010d02
*19010a02070111010a011102070115020701110111026302000000020000000300000043000000
*73690000007c0100690000640100830100701000017c01006900006402008301006f0500017401
*0053017402007c00007c01008302006f05000174010053017c00006903006403008301006f1b00
*016404007c0000690400830000640500196905008300006a06005301740600532806000000734d
*0000004973207468697320746578742c20617320612077686f6c652c206120507974686f6e2073
*63726970743f20286173206f70706f73656420746f207368656c6c2f6261742f6574632e0a2020
*202073030000002e707973040000002e7079777302000000232152590100006900000000280700
*000052d1000000529d00000052f1010000520301000052d601000052aa000000524c0000002802
*00000052f7000000525c00000028000000002800000000734c000000433a5c7461686f652d6c61
*66735c7365747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f
*6c735c636f6d6d616e645c656173795f696e7374616c6c2e707952f4000000f6050000730e0000
*000003200105011001050110021b02280100000052fb0000006300000000010000000100000047
*00000073040000006400005328010000004e28000000002801000000523b000000280000000028
*00000000734c000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331
*346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c656173795f696e73
*74616c6c2e707974060000005f63686d6f64070600007300000000630200000003000000060000
*004300000073530000007400006901006401007c00007c0100830300017911007402007c00007c
*010083020001576e2800047403006904006a0a006f190001017d0200017400006901006402007c
*0200830200016e020001586400005328030000004e73190000006368616e67696e67206d6f6465
*206f6620257320746f20256f731000000063686d6f64206661696c65643a202573280500000052
*03000000526901000052fa010000521700000074050000006572726f7228030000005218000000
*52fc000000522e00000028000000002800000000734c000000433a5c7461686f652d6c6166735c
*7365747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c
*636f6d6d616e645c656173795f696e7374616c6c2e707952fb00000009060000730a0000000001
*130103011101130163020000000200000002000000430000007348000000740000690100690200
*6401008301006f3100017403007c00008301006f2400017c01006f110001740400690500640200
*83010001714400016403007c000016536e0100017c00005328040000004e74040000006a617661
*739c0000005741524e494e473a20556e61626c6520746f2061646170742073686562616e67206c
*696e6520666f72204a7974686f6e2c2074686520666f6c6c6f77696e6720736372697074206973
*204e4f542065786563757461626c650a20202020202020202073656520687474703a2f2f627567
*732e6a7974686f6e2e6f72672f69737375653131313220666f72206d6f726520696e666f726d61
*74696f6e2e730f0000002f7573722f62696e2f656e7620257328060000005268000000521b0100
*00520301000052f40100005203000000526e000000280200000052a800000052df010000280000
*00002800000000734c000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e
*366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c656173795f
*696e7374616c6c2e707952dc01000010060000730a00000000012003070211050c016303000000
*100000000b0000006300000073a70100007400007c00006901008300008301007d030074020064
*01007c01007c02008303007d0400787c01641a00445d74017d0500786b017c00006903007c0500
*830100690400830000445d54015c02007d06007d0700640400740500830000167d080074060069
*07006405006a0200700700017c02006f1501017c05006403006a02006f2e0001641b005c02007d
*09007d0a006408006701007d0b00740800690900640900640a007c04008303007d0c006e310001
*641c005c02007d09007d0a00640d00640e00640f006703007d0b00740800690900641000641100
*7c04008303007d0c00740a00690b00690c007c0c00641200641300218301007010000174060069
*07006405006a03006f0a00017c0c007d0d006e0700017c04007d0d007c06007c0900177c0d007c
*080017641400670000047d0e007c0b00445d11007d0f007c0e007c06007c0f0017127138017e0e
*0066040056017c060064150017740d006416007c0a0083020064170066030056017c0600641800
*17740e007c0600660100166414006603005601714700017c06007c04007c080017660200560171
*470057712b005764190053281d00000073450000005969656c642077726974655f736372697074
*282920617267756d656e74207475706c657320666f72206120646973747269627574696f6e2773
*20656e747279706f696e74735255010000740f000000636f6e736f6c655f73637269707473740b
*0000006775695f7363726970747373c90000002320454153592d494e5354414c4c2d454e545259
*2d5343524950543a2025287370656329722c252867726f757029722c25286e616d6529720a5f5f
*72657175697265735f5f203d2025287370656329720a696d706f7274207379730a66726f6d2070
*6b675f7265736f757263657320696d706f7274206c6f61645f656e7472795f706f696e740a0a73
*79732e65786974280a2020206c6f61645f656e7472795f706f696e742825287370656329722c20
*252867726f757029722c2025286e616d6529722928290a290a521c010000730b0000002d736372
*6970742e70797773070000006775692e65786573040000002e707977730e000000283f69297079
*74686f6e2e657865730b000000707974686f6e772e657865730a0000002d7363726970742e7079
*7307000000636c692e65786573030000002e707973040000002e70796373040000002e70796f73
*0f000000283f6929707974686f6e772e657865730a000000707974686f6e2e6578656902000000
*69ffffffff52fa00000073040000002e65786552630100005229000000730d0000002e6578652e
*6d616e69666573744e2802000000730f000000636f6e736f6c655f7363726970747352fe010000
*2802000000730b0000002d7363726970742e70797773070000006775692e657865280200000073
*0a0000002d7363726970742e70797307000000636c692e657865280f00000052f300000052dd00
*000052f5000000740d0000006765745f656e7472795f6d6170522401000052f600000052680000
*00521b010000740200000072657403000000737562521700000052180000005219000000527401
*000074120000005f6c61756e636865725f6d616e6966657374281000000052b700000052a80000
*0052dd0100005289000000740600000068656164657252d801000052a900000074020000006570
*52f7000000524f01000074080000006c61756e636865725231010000740a0000006e65775f6865
*6164657252e0010000527d000000522400000028000000002800000000734c000000433a5c7461
*686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c7365
*747570746f6f6c735c636f6d6d616e645c656173795f696e7374616c6c2e707952f10000001f06
*000073300000000002120112010700060116000c0203080a0117020d010c01090119020c010f01
*15022a010a0206013802130108011d0473f50100000a3c3f786d6c2076657273696f6e3d22312e
*302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0a
*3c617373656d626c7920786d6c6e733d2275726e3a736368656d61732d6d6963726f736f66742d
*636f6d3a61736d2e763122206d616e696665737456657273696f6e3d22312e30223e0a203c6173
*73656d626c794964656e746974792076657273696f6e3d22312e302e302e30220a2070726f6365
*73736f724172636869746563747572653d22583836220a206e616d653d2225732e657865220a20
*747970653d2277696e3332222f3e0a0a203c212d2d204964656e7469667920746865206170706c
*69636174696f6e20736563757269747920726571756972656d656e74732e202d2d3e0a203c7472
*757374496e666f20786d6c6e733d2275726e3a736368656d61732d6d6963726f736f66742d636f
*6d3a61736d2e7633223e0a203c73656375726974793e0a203c7265717565737465645072697669
*6c656765733e0a203c726571756573746564457865637574696f6e4c6576656c206c6576656c3d
*226173496e766f6b6572222075694163636573733d2266616c7365222f3e0a203c2f7265717565
*7374656450726976696c656765733e0a203c2f73656375726974793e0a203c2f7472757374496e
*666f3e0a3c2f617373656d626c793e6303000000080000000c0000004300000073860100007c01
*006f0d00016401008400007d02006e1b00017c02006404006a08006f0d00016402008400007d02
*006e0100016700007d03007913007401006902007c00008301007d0300576e3100047401006903
*006a0a006f220001017d0400017c02007401006902007c0000740400690500830000830300016e
*0200015878c1007c0300445db9007d05007401006906006907007c00007c05008302007d060079
*16007401006908007c06008301006909007d0700576e1c00047401006903006a0a006f0d000101
*01016403007d07006e02000158740a00690b007c07008301006f140001740c007c06007c01007c
*02008303000171820001791100740100690d007c06008301000157718200047401006903006a0a
*006f220001017d0400017c0200740100690d007c06007404006905008300008303000171820001
*5871820057791100740100690e007c000083010001576e2f00047401006903006a0a006f200001
*0101017c0200740100690e007c0000740400690500830000830300016e02000158640400532805
*00000073a10000005265637572736976656c792064656c6574652061206469726563746f727920
*747265652e0a0a202020205468697320636f64652069732074616b656e2066726f6d2074686520
*507974686f6e20322e342076657273696f6e206f66202773687574696c272c2062656361757365
*0a2020202074686520322e332076657273696f6e20646f65736e2774207265616c6c7920776f72
*6b2072696768742e0a202020206300000000010000000100000057000000730400000064000053
*28010000004e28000000002801000000523b00000028000000002800000000734c000000433a5c
*7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c
*7365747570746f6f6c735c636f6d6d616e645c656173795f696e7374616c6c2e70797407000000
*6f6e6572726f727806000073020000000001630000000001000000010000005700000073070000
*008200006400005328010000004e28000000002801000000523b00000028000000002800000000
*734c000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36633134646576
*6465762e6567675c7365747570746f6f6c735c636f6d6d616e645c656173795f696e7374616c6c
*2e707952070200007b0600007302000000000169000000004e280f000000523200000052170000
*0052e800000052fb010000526800000052a20000005218000000529100000074050000006c7374
*6174740700000073745f6d6f6465526c0100007407000000535f49534449525259000000526501
*00007405000000726d64697228080000005218000000740d00000069676e6f72655f6572726f72
*735207020000524d010000740300000065727252a9000000740800000066756c6c6e616d6552fc
*00000028000000002800000000734c000000433a5c7461686f652d6c6166735c7365747570746f
*6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e64
*5c656173795f696e7374616c6c2e70795259000000710600007334000000000607010d020d010d
*0206010301130113011e010700060115010301160111010b011001140203011101130122010301
*110111016300000000020000000400000043000000734d0000006401006400006b00007d000074
*01006902006903007c0000690400640200198301007d01007c01007405006906006402003c7405
*006906006907007c010083010001740800830000016400005328030000004e69ffffffff690000
*0000280900000052630100005217000000521800000052ae00000074080000005f5f706174685f
*5f5268000000740400000061726776526f00000052140000002802000000526301000074050000
*00617267763028000000002800000000734c000000433a5c7461686f652d6c6166735c73657475
*70746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d
*616e645c656173795f696e7374616c6c2e70797409000000626f6f74737472617094060000730a
*00000000020c0019010d0010006301000000020000000c0000000b00000073b000000064010064
*02006b00006c0100890200016401006403006b02006c0300890600016401006400006b04008901
*006404008905008705006601006405008600008900008700008701006602006406008600008907
*00640700880600660100870600870700660200640800860000830000598908008803006400006a
*08006f1100017406006907006409001f8903006e01000188070087020087040087080087030066
*0400640a008600008301000164000053280b0000004e69ffffffff280100000074050000007365
*7475702801000000520d010000734c00000075736167653a2025287363726970742973205b6f70
*74696f6e735d20726571756972656d656e745f6f725f75726c202e2e2e0a2020206f723a202528
*7363726970742973202d2d68656c700a6301000000020000000200000013000000731d00000074
*00006901006902007c00008301007d0100880000740300830000165328010000004e2804000000
*5217000000521800000052af000000740400000076617273280200000052b80000007406000000
*7363726970742801000000740500000055534147452800000000734c000000433a5c7461686f65
*2d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c7365747570
*746f6f6c735c636f6d6d616e645c656173795f696e7374616c6c2e7079740900000067656e5f75
*73616765a406000073040000000001120163010000000200000006000000130000007337000000
*8801006900006901007d01007a17008800008801006900005f01007c000083000053576400007c
*01008801006900005f0100586400005328010000004e28020000007404000000636f7265521702
*000028020000005227000000740d0000006f6c645f67656e5f7573616765280200000052170200
*0052850000002800000000734c000000433a5c7461686f652d6c6166735c7365747570746f6f6c
*732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c65
*6173795f696e7374616c6c2e7079740d000000776974685f65695f7573616765a8060000730a00
*000000010c0103010c010b02741f000000446973747269627574696f6e576974686f757448656c
*70436f6d6d616e6473630000000000000000020000000200000073200000006500005a01006400
*005a02008700008701006602006401008600005a03005253280200000052550100006301000000
*03000000050000001f000000732000000088040087030087010087020087000066040064010086
*0000830100016400005328020000004e6300000000000000000400000013000000731300000088
*00006900008803008801008802008e01005328000000002801000000740a0000005f73686f775f
*68656c7028000000002804000000520d010000523b00000074020000006b775253000000280000
*0000734c000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663313464
*65766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c656173795f696e737461
*6c6c2e707974080000003c6c616d6264613eb30600007300000000280000000028030000005253
*000000523b000000521d0200002802000000520d010000521a0200002803000000525300000052
*3b000000521d020000734c000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d
*302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c656173
*795f696e7374616c6c2e7079521c020000b2060000730200000000012804000000528601000052
*87010000740c000000636f6d6d6f6e5f7573616765521c02000028000000002802000000520d01
*0000521a0200002800000000734c000000433a5c7461686f652d6c6166735c7365747570746f6f
*6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c
*656173795f696e7374616c6c2e7079521b020000b0060000730400000006010601690100000063
*000000000000000008000000130000007337000000880000640000640100640200640300670300
*8803001764040074000069010064050019700400016402006406008802008801008d0003532807
*000000740b0000007363726970745f6172677373020000002d71521100000073020000002d7652
*b80000006900000000740900000064697374636c61737328020000005268000000521002000028
*0000000028040000005213020000521d020000521b02000052100200002800000000734c000000
*433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e65
*67675c7365747570746f6f6c735c636f6d6d616e645c656173795f696e7374616c6c2e7079521e
*020000b806000073080000000001060113011401280800000052630100005213020000740f0000
*007365747570746f6f6c732e64697374520d010000740e000000646973747574696c732e636f72
*6552320000005268000000521002000028020000005210020000521d0200002800000000280900
*00005217020000528500000052130200005210020000521d0200005216020000520d010000521a
*020000521b020000734c000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d30
*2e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c65617379
*5f696e7374616c6c2e707952140000009a06000073140000000001100110010c0506020f041208
*1f050d01110228440000005288010000526800000074070000006f732e70617468521700000052
*0b01000052ea00000052c300000052a70100005200020000526c010000528e0000005200000000
*5263010000520100000074120000007365747570746f6f6c732e73616e64626f78520200000052
*85000000520300000052040000007413000000646973747574696c732e737973636f6e66696752
*050000007410000000646973747574696c732e6572726f72735206000000520700000052080000
*0074170000007365747570746f6f6c732e617263686976655f7574696c52090000007418000000
*7365747570746f6f6c732e7061636b6167655f696e646578520a000000520b000000520c000000
*74120000007365747570746f6f6c732e636f6d6d616e64520d000000520e000000740d00000070
*6b675f7265736f75726365735218000000521a00000052a8000000740e0000007379735f657865
*63757461626c6574070000005f5f616c6c5f5f521000000052110000005269000000524a010000
*5213000000521500000052c900000052740000005212000000524c00000052f500000052e50100
*00521401000052e701000052f101000052f401000052d901000052f400000052fb00000052fa01
*0000524b01000052dc01000052f100000052020200005259000000521202000052320000005214
*000000280000000028000000002800000000734c000000433a5c7461686f652d6c6166735c7365
*747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f
*6d6d616e645c656173795f696e7374616c6c2e707974080000003c6d6f64756c653e0b00000073
*5c00000006016c01100110011001160110011c0210011601100116010a0115030c010c03090a16
*ff00ff00ff00ff005f0929092909290921090816610f1a09070906090a0c0909090929090d0301
*14010e020e020907090f0f3906190f230906
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/egg_info.py
hunk ./setuptools-0.6c14devdev.egg/setuptools/command/egg_info.py 1
+"""setuptools.command.egg_info
+
+Create a distribution's .egg-info directory and contents"""
+
+# This module should be kept compatible with Python 2.3
+import os, re
+from setuptools import Command
+from distutils.errors import *
+from distutils import log
+from setuptools.command.sdist import sdist
+from distutils.util import convert_path
+from distutils.filelist import FileList
+from pkg_resources import parse_requirements, safe_name, parse_version, \
+    safe_version, yield_lines, EntryPoint, iter_entry_points, to_filename
+from sdist import walk_revctrl
+
+class egg_info(Command):
+    description = "create a distribution's .egg-info directory"
+
+    user_options = [
+        ('egg-base=', 'e', "directory containing .egg-info directories"
+                           " (default: top of the source tree)"),
+        ('tag-svn-revision', 'r',
+            "Add subversion revision ID to version number"),
+        ('tag-date', 'd', "Add date stamp (e.g. 20050528) to version number"),
+        ('tag-build=', 'b', "Specify explicit tag to add to version number"),
+        ('no-svn-revision', 'R',
+            "Don't add subversion revision ID [default]"),
+        ('no-date', 'D', "Don't include date stamp [default]"),
+    ]
+
+    boolean_options = ['tag-date', 'tag-svn-revision']
+    negative_opt = {'no-svn-revision': 'tag-svn-revision',
+                    'no-date': 'tag-date'}
+
+
+
+
+
+
+
+    def initialize_options(self):
+        self.egg_name = None
+        self.egg_version = None
+        self.egg_base = None
+        self.egg_info = None
+        self.tag_build = None
+        self.tag_svn_revision = 0
+        self.tag_date = 0
+        self.broken_egg_info = False
+        self.vtags = None
+
+    def save_version_info(self, filename):
+        from setopt import edit_config
+        edit_config(
+            filename,
+            {'egg_info':
+                {'tag_svn_revision':0, 'tag_date': 0, 'tag_build': self.tags()}
+            }
+        )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    def finalize_options (self):
+        self.egg_name = safe_name(self.distribution.get_name())
+        self.vtags = self.tags()
+        self.egg_version = self.tagged_version()
+
+        try:
+            list(
+                parse_requirements('%s==%s' % (self.egg_name,self.egg_version))
+            )
+        except ValueError:
+            raise DistutilsOptionError(
+                "Invalid distribution name or version syntax: %s-%s" %
+                (self.egg_name,self.egg_version)
+            )
+
+        if self.egg_base is None:
+            dirs = self.distribution.package_dir
+            self.egg_base = (dirs or {}).get('',os.curdir)
+
+        self.ensure_dirname('egg_base')
+        self.egg_info = to_filename(self.egg_name)+'.egg-info'
+        if self.egg_base != os.curdir:
+            self.egg_info = os.path.join(self.egg_base, self.egg_info)
+        if '-' in self.egg_name: self.check_broken_egg_info()
+
+        # Set package version for the benefit of dumber commands
+        # (e.g. sdist, bdist_wininst, etc.)
+        #
+        self.distribution.metadata.version = self.egg_version
+
+        # If we bootstrapped around the lack of a PKG-INFO, as might be the
+        # case in a fresh checkout, make sure that any special tags get added
+        # to the version info
+        #
+        pd = self.distribution._patched_dist
+        if pd is not None and pd.key==self.egg_name.lower():
+            pd._version = self.egg_version
+            pd._parsed_version = parse_version(self.egg_version)
+            self.distribution._patched_dist = None
+
+
+    def write_or_delete_file(self, what, filename, data, force=False):
+        """Write `data` to `filename` or delete if empty
+
+        If `data` is non-empty, this routine is the same as ``write_file()``.
+        If `data` is empty but not ``None``, this is the same as calling
+        ``delete_file(filename)`.  If `data` is ``None``, then this is a no-op
+        unless `filename` exists, in which case a warning is issued about the
+        orphaned file (if `force` is false), or deleted (if `force` is true).
+        """
+        if data:
+            self.write_file(what, filename, data)
+        elif os.path.exists(filename):
+            if data is None and not force:
+                log.warn(
+                    "%s not set in setup(), but %s exists", what, filename
+                )
+                return
+            else:
+                self.delete_file(filename)
+
+    def write_file(self, what, filename, data):
+        """Write `data` to `filename` (if not a dry run) after announcing it
+
+        `what` is used in a log message to identify what is being written
+        to the file.
+        """
+        log.info("writing %s to %s", what, filename)
+        if not self.dry_run:
+            f = open(filename, 'wb')
+            f.write(data)
+            f.close()
+
+    def delete_file(self, filename):
+        """Delete `filename` (if not a dry run) after announcing it"""
+        log.info("deleting %s", filename)
+        if not self.dry_run:
+            os.unlink(filename)
+
+    def tagged_version(self):
+        return safe_version(self.distribution.get_version() + self.vtags)
+
+    def run(self):
+        self.mkpath(self.egg_info)
+        installer = self.distribution.fetch_build_egg
+        for ep in iter_entry_points('egg_info.writers'):
+            writer = ep.load(installer=installer)
+            writer(self, ep.name, os.path.join(self.egg_info,ep.name))
+
+        # Get rid of native_libs.txt if it was put there by older bdist_egg
+        nl = os.path.join(self.egg_info, "native_libs.txt")
+        if os.path.exists(nl):
+            self.delete_file(nl)
+
+        self.find_sources()
+
+    def tags(self):
+        version = ''
+        if self.tag_build:
+            version+=self.tag_build
+        if self.tag_svn_revision and (
+            os.path.exists('.svn') or os.path.exists('PKG-INFO')
+        ):  version += '-r%s' % self.get_svn_revision()
+        if self.tag_date:
+            import time; version += time.strftime("-%Y%m%d")
+        return version
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    def get_svn_revision(self):
+        revision = 0
+        urlre = re.compile('url="([^"]+)"')
+        revre = re.compile('committed-rev="(\d+)"')
+
+        for base,dirs,files in os.walk(os.curdir):
+            if '.svn' not in dirs:
+                dirs[:] = []
+                continue    # no sense walking uncontrolled subdirs
+            dirs.remove('.svn')
+            f = open(os.path.join(base,'.svn','entries'))
+            data = f.read()
+            f.close()
+
+            if data.startswith('9') or data.startswith('8'):
+                data = map(str.splitlines,data.split('\n\x0c\n'))
+                del data[0][0]  # get rid of the '8' or '9'
+                dirurl = data[0][3]
+                localrev = max([int(d[9]) for d in data if len(d)>9 and d[9]]+[0])
+            elif data.startswith('<?xml'):
+                dirurl = urlre.search(data).group(1)    # get repository URL
+                localrev = max([int(m.group(1)) for m in revre.finditer(data)]+[0])
+            else:
+                log.warn("unrecognized .svn/entries format; skipping %s", base)
+                dirs[:] = []
+                continue
+            if base==os.curdir:
+                base_url = dirurl+'/'   # save the root url
+            elif not dirurl.startswith(base_url):
+                dirs[:] = []
+                continue    # not part of the same svn tree, skip it
+            revision = max(revision, localrev)
+
+        return str(revision or get_pkg_info_revision())
+
+
+
+
+
+
+
+    def find_sources(self):
+        """Generate SOURCES.txt manifest file"""
+        manifest_filename = os.path.join(self.egg_info,"SOURCES.txt")
+        mm = manifest_maker(self.distribution)
+        mm.manifest = manifest_filename
+        mm.run()
+        self.filelist = mm.filelist
+
+    def check_broken_egg_info(self):
+        bei = self.egg_name+'.egg-info'
+        if self.egg_base != os.curdir:
+            bei = os.path.join(self.egg_base, bei)
+        if os.path.exists(bei):
+            log.warn(
+                "-"*78+'\n'
+                "Note: Your current .egg-info directory has a '-' in its name;"
+                '\nthis will not work correctly with "setup.py develop".\n\n'
+                'Please rename %s to %s to correct this problem.\n'+'-'*78,
+                bei, self.egg_info
+            )
+            self.broken_egg_info = self.egg_info
+            self.egg_info = bei     # make it work for now
+
+class FileList(FileList):
+    """File list that accepts only existing, platform-independent paths"""
+
+    def append(self, item):
+        if item.endswith('\r'):     # Fix older sdists built on Windows
+            item = item[:-1]
+        path = convert_path(item)
+        if os.path.exists(path):
+            self.files.append(path)
+
+
+
+
+
+
+
+
+
+class manifest_maker(sdist):
+
+    template = "MANIFEST.in"
+
+    def initialize_options (self):
+        self.use_defaults = 1
+        self.prune = 1
+        self.manifest_only = 1
+        self.force_manifest = 1
+
+    def finalize_options(self):
+        pass
+
+    def run(self):
+        self.filelist = FileList()
+        if not os.path.exists(self.manifest):
+            self.write_manifest()   # it must exist so it'll get in the list
+        self.filelist.findall()
+        self.add_defaults()
+        if os.path.exists(self.template):
+            self.read_template()
+        self.prune_file_list()
+        self.filelist.sort()
+        self.filelist.remove_duplicates()
+        self.write_manifest()
+
+    def write_manifest (self):
+        """Write the file list in 'self.filelist' (presumably as filled in
+        by 'add_defaults()' and 'read_template()') to the manifest file
+        named by 'self.manifest'.
+        """
+        files = self.filelist.files
+        if os.sep!='/':
+            files = [f.replace(os.sep,'/') for f in files]
+        self.execute(write_file, (self.manifest, files),
+                     "writing manifest file '%s'" % self.manifest)
+
+    def warn(self, msg):    # suppress missing-file warnings from sdist
+        if not msg.startswith("standard file not found:"):
+            sdist.warn(self, msg)
+
+    def add_defaults(self):
+        sdist.add_defaults(self)
+        self.filelist.append(self.template)
+        self.filelist.append(self.manifest)
+        rcfiles = list(walk_revctrl())
+        if rcfiles:
+            self.filelist.extend(rcfiles)
+        elif os.path.exists(self.manifest):
+            self.read_manifest()
+        ei_cmd = self.get_finalized_command('egg_info')
+        self.filelist.include_pattern("*", prefix=ei_cmd.egg_info)
+
+    def prune_file_list (self):
+        build = self.get_finalized_command('build')
+        base_dir = self.distribution.get_fullname()
+        self.filelist.exclude_pattern(None, prefix=build.build_base)
+        self.filelist.exclude_pattern(None, prefix=base_dir)
+        sep = re.escape(os.sep)
+        self.filelist.exclude_pattern(sep+r'(RCS|CVS|\.svn)'+sep, is_regex=1)
+
+
+def write_file (filename, contents):
+    """Create a file with the specified name and write 'contents' (a
+    sequence of strings without line terminators) to it.
+    """
+    f = open(filename, "wb")        # always write POSIX-style manifest
+    f.write("\n".join(contents))
+    f.close()
+
+
+
+
+
+
+
+
+
+
+
+
+
+def write_pkg_info(cmd, basename, filename):
+    log.info("writing %s", filename)
+    if not cmd.dry_run:
+        metadata = cmd.distribution.metadata
+        metadata.version, oldver = cmd.egg_version, metadata.version
+        metadata.name, oldname   = cmd.egg_name, metadata.name
+        try:
+            # write unescaped data to PKG-INFO, so older pkg_resources
+            # can still parse it
+            metadata.write_pkg_info(cmd.egg_info)
+        finally:
+            metadata.name, metadata.version = oldname, oldver
+
+        safe = getattr(cmd.distribution,'zip_safe',None)
+        import bdist_egg; bdist_egg.write_safety_flag(cmd.egg_info, safe)
+
+def warn_depends_obsolete(cmd, basename, filename):
+    if os.path.exists(filename):
+        log.warn(
+            "WARNING: 'depends.txt' is not used by setuptools 0.6!\n"
+            "Use the install_requires/extras_require setup() args instead."
+        )
+
+
+def write_requirements(cmd, basename, filename):
+    dist = cmd.distribution
+    data = ['\n'.join(yield_lines(dist.install_requires or ()))]
+    for extra,reqs in (dist.extras_require or {}).items():
+        data.append('\n\n[%s]\n%s' % (extra, '\n'.join(yield_lines(reqs))))
+    cmd.write_or_delete_file("requirements", filename, ''.join(data))
+
+def write_toplevel_names(cmd, basename, filename):
+    pkgs = dict.fromkeys(
+        [k.split('.',1)[0]
+            for k in cmd.distribution.iter_distribution_names()
+        ]
+    )
+    cmd.write_file("top-level names", filename, '\n'.join(pkgs)+'\n')
+
+
+
+def overwrite_arg(cmd, basename, filename):
+    write_arg(cmd, basename, filename, True)
+
+def write_arg(cmd, basename, filename, force=False):
+    argname = os.path.splitext(basename)[0]
+    value = getattr(cmd.distribution, argname, None)
+    if value is not None:
+        value = '\n'.join(value)+'\n'
+    cmd.write_or_delete_file(argname, filename, value, force)
+
+def write_entries(cmd, basename, filename):
+    ep = cmd.distribution.entry_points
+
+    if isinstance(ep,basestring) or ep is None:
+        data = ep
+    elif ep is not None:
+        data = []
+        for section, contents in ep.items():
+            if not isinstance(contents,basestring):
+                contents = EntryPoint.parse_group(section, contents)
+                contents = '\n'.join(map(str,contents.values()))
+            data.append('[%s]\n%s\n\n' % (section,contents))
+        data = ''.join(data)
+
+    cmd.write_or_delete_file('entry points', filename, data, True)
+
+def get_pkg_info_revision():
+    # See if we can get a -r### off of PKG-INFO, in case this is an sdist of
+    # a subversion revision
+    #
+    if os.path.exists('PKG-INFO'):
+        f = open('PKG-INFO','rU')
+        for line in f:
+            match = re.match(r"Version:.*-r(\d+)\s*$", line)
+            if match:
+                return int(match.group(1))
+    return 0
+
+
+
+#
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/egg_info.pyc
binary ./setuptools-0.6c14devdev.egg/setuptools/command/egg_info.pyc
oldhex
*
newhex
*d1f20d0a421ef84b6300000000000000000d00000040000000735c0100006400005a0000640100
*6402006b01005a01006401006402006b02005a02006401006403006b03006c04005a0400016401
*006404006b0500546401006405006b06006c07005a0700016401006406006b08006c09005a0900
*016401006407006b0a006c0b005a0b00016401006408006b0c006c0d005a0d0001640100640900
*6b0e006c0f005a0f006c10005a10006c11005a11006c12005a12006c13005a13006c14005a1400
*6c15005a15006c16005a160001640100640a006b09006c17005a170001640b0065040066010064
*0c00840000830000595a1800640d00650d00660100640e00840000830000595a0d00640f006509
*00660100641000840000830000595a19006411008400005a1a006412008400005a1b0064130084
*00005a1c006414008400005a1d006415008400005a1e006416008400005a1f0065200064170084
*01005a21006418008400005a22006419008400005a230064020053281a00000073550000007365
*747570746f6f6c732e636f6d6d616e642e6567675f696e666f0a0a437265617465206120646973
*747269627574696f6e2773202e6567672d696e666f206469726563746f727920616e6420636f6e
*74656e747369ffffffff4e28010000007407000000436f6d6d616e64280100000074010000002a
*280100000074030000006c6f672801000000740500000073646973742801000000740c00000063
*6f6e766572745f706174682801000000740800000046696c654c69737428080000007412000000
*70617273655f726571756972656d656e74737409000000736166655f6e616d65740d0000007061
*7273655f76657273696f6e740c000000736166655f76657273696f6e740b0000007969656c645f
*6c696e6573740a000000456e747279506f696e747411000000697465725f656e7472795f706f69
*6e7473740b000000746f5f66696c656e616d652801000000740c00000077616c6b5f7265766374
*726c74080000006567675f696e666f630000000000000000080000004200000073b50000006500
*005a01006400005a0200641f006420006421006422006423006424006706005a03006407006404
*006702005a0400680200640400640d0036640700641000365a05006413008400005a0600641400
*8400005a07006415008400005a08006509006416008401005a0a006417008400005a0b00641800
*8400005a0c006419008400005a0d00641a008400005a0e00641b008400005a0f00641c00840000
*5a1000641d008400005a1100641e008400005a120052532825000000732b000000637265617465
*206120646973747269627574696f6e2773202e6567672d696e666f206469726563746f72797309
*0000006567672d626173653d740100000065734c0000006469726563746f727920636f6e746169
*6e696e67202e6567672d696e666f206469726563746f72696573202864656661756c743a20746f
*70206f662074686520736f7572636520747265652973100000007461672d73766e2d7265766973
*696f6e740100000072732c0000004164642073756276657273696f6e207265766973696f6e2049
*4420746f2076657273696f6e206e756d62657273080000007461672d6461746574010000006473
*300000004164642064617465207374616d702028652e672e2032303035303532382920746f2076
*657273696f6e206e756d626572730a0000007461672d6275696c643d740100000062732d000000
*53706563696679206578706c696369742074616720746f2061646420746f2076657273696f6e20
*6e756d626572730f0000006e6f2d73766e2d7265766973696f6e740100000052732a000000446f
*6e2774206164642073756276657273696f6e207265766973696f6e204944205b64656661756c74
*5d73070000006e6f2d646174657401000000447322000000446f6e277420696e636c7564652064
*617465207374616d70205b64656661756c745d6301000000010000000200000043000000735500
*00006400007c00005f01006400007c00005f02006400007c00005f03006400007c00005f040064
*00007c00005f05006401007c00005f06006401007c00005f07007408007c00005f09006400007c
*00005f0a006400005328020000004e6900000000280b00000074040000004e6f6e657408000000
*6567675f6e616d65740b0000006567675f76657273696f6e74080000006567675f62617365520f
*00000074090000007461675f6275696c6474100000007461675f73766e5f7265766973696f6e74
*080000007461675f64617465740500000046616c7365740f00000062726f6b656e5f6567675f69
*6e666f740500000076746167732801000000740400000073656c66280000000028000000007334
*0000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d
*6d616e645c6567675f696e666f2e70797412000000696e697469616c697a655f6f7074696f6e73
*2a0000007312000000000109010901090109010901090109010901630200000003000000070000
*004300000073430000006401006402006b00006c01007d0200017c02007c010068010068030064
*030064040036640300640500367c00006902008300006406003664070036830200016400005328
*080000004e69ffffffff2801000000740b000000656469745f636f6e6669676900000000521b00
*0000521c000000521a000000520f000000280300000074060000007365746f7074522200000074
*040000007461677328030000005220000000740800000066696c656e616d655222000000280000
*0000280000000073340000006275696c645c62646973742e77696e33325c6567675c7365747570
*746f6f6c735c636f6d6d616e645c6567675f696e666f2e70797411000000736176655f76657273
*696f6e5f696e666f35000000730a00000000011001030103010301630100000003000000080000
*004300000073b70100007400007c00006901006902008300008301007c00005f03007c00006904
*008300007c00005f05007c00006906008300007c00005f07007924007408007409006401007c00
*006903007c00006907006602001683010083010001576e2f0004740a006a0a006f230001010101
*740b006402007c00006903007c0000690700660200168301008201006e020001587c0000690c00
*6400006a08006f2f00017c0000690100690e007d01007c010070040001680000690f0064030074
*10006911008302007c00005f0c006e0100017c0000691200640400830100017413007c00006903
*00830100640500177c00005f14007c0000690c007410006911006a03006f220001741000691500
*6916007c0000690c007c00006914008302007c00005f14006e0100016406007c00006903006a06
*006f0e00017c0000691700830000016e0100017c00006907007c00006901006918005f19007c00
*00690100691a007d02007c02006400006a09006f4700017c0200691b007c0000690300691c0083
*00006a02006f2e00017c00006907007c02005f1d00741e007c00006907008301007c02005f1f00
*6400007c00006901005f1a006e0100016400005328070000004e730600000025733d3d25737332
*000000496e76616c696420646973747269627574696f6e206e616d65206f722076657273696f6e
*2073796e7461783a2025732d25737400000000521900000073090000002e6567672d696e666f74
*010000002d28200000005207000000740c000000646973747269627574696f6e74080000006765
*745f6e616d6552170000005224000000521f000000740e0000007461676765645f76657273696f
*6e521800000074040000006c6973745206000000740a00000056616c75654572726f7274140000
*00446973747574696c734f7074696f6e4572726f7252190000005216000000740b000000706163
*6b6167655f646972740300000067657474020000006f737406000000637572646972740e000000
*656e737572655f6469726e616d65520d000000520f00000074040000007061746874040000006a
*6f696e7415000000636865636b5f62726f6b656e5f6567675f696e666f74080000006d65746164
*617461740700000076657273696f6e740d0000005f706174636865645f6469737474030000006b
*657974050000006c6f77657274080000005f76657273696f6e5208000000740f0000005f706172
*7365645f76657273696f6e28030000005220000000740400000064697273740200000070642800
*000000280000000073340000006275696c645c62646973742e77696e33325c6567675c73657475
*70746f6f6c735c636f6d6d616e645c6567675f696e666f2e7079741000000066696e616c697a65
*5f6f7074696f6e73530000007332000000000118010f010f020301030121020e01030103011b03
*10010c0123020d0116011301220110000e0512060c0126010c0112016305000000050000000400
*00004300000073730000007c03006f1700017c00006900007c01007c02007c0300830300016e52
*00017401006902006903007c02008301006f3e00017c03006402006a08006f2000017c04000c6f
*1800017405006906006401007c01007c02008303000164020053017c00006907007c0200830100
*016e01000164020053280300000073b901000057726974652060646174616020746f206066696c
*656e616d6560206f722064656c65746520696620656d7074790a0a202020202020202049662060
*6461746160206973206e6f6e2d656d7074792c207468697320726f7574696e6520697320746865
*2073616d6520617320606077726974655f66696c65282960602e0a202020202020202049662060
*646174616020697320656d70747920627574206e6f742060604e6f6e6560602c20746869732069
*73207468652073616d652061732063616c6c696e670a2020202020202020606064656c6574655f
*66696c652866696c656e616d6529602e20204966206064617461602069732060604e6f6e656060
*2c207468656e20746869732069732061206e6f2d6f700a2020202020202020756e6c6573732060
*66696c656e616d6560206578697374732c20696e20776869636820636173652061207761726e69
*6e67206973206973737565642061626f7574207468650a20202020202020206f727068616e6564
*2066696c65202869662060666f726365602069732066616c7365292c206f722064656c65746564
*202869662060666f726365602069732074727565292e0a20202020202020207324000000257320
*6e6f742073657420696e20736574757028292c20627574202573206578697374734e2808000000
*740a00000077726974655f66696c65523100000052340000007406000000657869737473521600
*0000520200000074040000007761726e740b00000064656c6574655f66696c6528050000005220
*00000074040000007768617452250000007404000000646174617405000000666f726365280000
*0000280000000073340000006275696c645c62646973742e77696e33325c6567675c7365747570
*746f6f6c735c636f6d6d616e645c6567675f696e666f2e7079741400000077726974655f6f725f
*64656c6574655f66696c657c00000073100000000009070117011301150106010d020502630400
*0000050000000400000043000000734b0000007400006901006401007c01007c0200830300017c
*0000690200702a00017403007c02006402008302007d04007c04006904007c0300830100017c04
*00690500830000016e01000164030053280400000073aa00000057726974652060646174616020
*746f206066696c656e616d656020286966206e6f742061206472792072756e2920616674657220
*616e6e6f756e63696e672069740a0a202020202020202060776861746020697320757365642069
*6e2061206c6f67206d65737361676520746f206964656e74696679207768617420697320626569
*6e67207772697474656e0a2020202020202020746f207468652066696c652e0a20202020202020
*20731000000077726974696e6720257320746f202573740200000077624e280600000052020000
*007404000000696e666f74070000006472795f72756e74040000006f70656e7405000000777269
*74657405000000636c6f7365280500000052200000005245000000522500000052460000007401
*000000662800000000280000000073340000006275696c645c62646973742e77696e33325c6567
*675c7365747570746f6f6c735c636f6d6d616e645c6567675f696e666f2e707952410000009000
*0000730a000000000613010a010f010d016302000000020000000300000043000000732f000000
*7400006901006401007c0100830200017c0000690200701100017403006904007c010083010001
*6e010001640200532803000000733800000044656c657465206066696c656e616d656020286966
*206e6f742061206472792072756e2920616674657220616e6e6f756e63696e67206974730b0000
*0064656c6574696e672025734e28050000005202000000524a000000524b000000523100000074
*06000000756e6c696e6b2802000000522000000052250000002800000000280000000073340000
*006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d61
*6e645c6567675f696e666f2e707952440000009c0000007306000000000210010a016301000000
*010000000300000043000000731a0000007400007c00006901006902008300007c000069030017
*8301005328010000004e280400000052090000005229000000740b0000006765745f7665727369
*6f6e521f000000280100000052200000002800000000280000000073340000006275696c645c62
*646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c6567675f69
*6e666f2e7079522b000000a2000000730200000000016301000000050000000700000043000000
*73b70000007c00006900007c0000690100830100017c00006902006903007d0100784e00740400
*640100830100445d40007d02007c02006905006402007c01008300017d03007c03007c00007c02
*006906007407006908006909007c00006901007c02006906008302008303000171290057740700
*6908006909007c00006901006403008302007d0400740700690800690a007c04008301006f1100
*017c0000690b007c0400830100016e0100017c0000690c00830000016400005328040000004e73
*100000006567675f696e666f2e777269746572737409000000696e7374616c6c6572730f000000
*6e61746976655f6c6962732e747874280d00000074060000006d6b70617468520f000000522900
*0000740f00000066657463685f6275696c645f656767520c00000074040000006c6f6164740400
*00006e616d6552310000005234000000523500000052420000005244000000740c00000066696e
*645f736f7572636573280500000052200000005252000000740200000065707406000000777269
*74657274020000006e6c2800000000280000000073340000006275696c645c62646973742e7769
*6e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c6567675f696e666f2e707974
*0300000072756ea50000007314000000000110010c010d00060112012c03180113011102630100
*0000030000000400000043000000739a0000006401007d01007c00006900006f1100017c01007c
*0000690000377d01006e0100017c00006901006f3e000174020069030069040064020083010070
*1300017402006903006904006403008301006f1800017c01006404007c00006905008300001637
*7d01006e0100017c00006906006f2300016405006400006b07007d02007c01007c020069080064
*0600830100377d01006e0100017c01005328070000004e522700000073040000002e73766e7308
*000000504b472d494e464f73040000002d72257369ffffffff73070000002d2559256d25642809
*000000521a000000521b00000052310000005234000000524200000074100000006765745f7376
*6e5f7265766973696f6e521c000000740400000074696d6574080000007374726674696d652803
*00000052200000005238000000525d0000002800000000280000000073340000006275696c645c
*62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c6567675f
*696e666f2e70795224000000b30000007314000000000106010a0111010a01260118010a010c00
*1701630100000010000000080000004300000073430200006401007d0100740000690100640200
*8301007d02007400006901006403008301007d0300780802740200690300740200690400830100
*445df4015c03007d04007d05007d06006404007c05006a07006f0e00016700007c050028713700
*6e0100017c0500690500640400830100017406007402006907006908007c040064040064050083
*03008301007d07007c07006909008300007d08007c0700690a00830000017c0800690b00640600
*830100701000017c0800690b006407008301006f920001740c00740d00690e007c0800690f0064
*08008301008302007d08007c0800640100196401003d7c080064010019640900197d0900741000
*670000047d0a007c0800445d39007d0b007411007c0b00830100640a006a04006f2000017c0b00
*640a00196f1500017c0a007412007c0b00640a001983010012710401017104017e0a0064010067
*0100178301007d0c006e8d00017c0800690b00640b008301006f6200017c02006913007c080083
*0100691400640c008301007d0900741000670000047d0d007c03006915007c0800830100445d1c
*007d0e007c0d007412007c0e00691400640c00830100830100127193017e0d0064010067010017
*8301007d0c006e1b0001741600691700640d007c0400830200016700007c0500287137007c0400
*7402006904006a02006f0e00017c0900640e00177d0f006e1f00017c0900690b007c0f00830100
*700e00016700007c0500287137006e0100017410007c01007c0c008302007d010071370057740d
*007c01007007000174180083000083010053280f0000004e6900000000730d00000075726c3d22
*285b5e225d2b29227315000000636f6d6d69747465642d7265763d22285c642b29227304000000
*2e73766e7407000000656e747269657374010000003974010000003873030000000a0c0a690300
*0000690900000073050000003c3f786d6c6901000000732d000000756e7265636f676e697a6564
*202e73766e2f656e747269657320666f726d61743b20736b697070696e6720257374010000002f
*2819000000740200000072657407000000636f6d70696c655231000000740400000077616c6b52
*32000000740600000072656d6f7665524c00000052340000005235000000740400000072656164
*524e000000740a0000007374617274737769746874030000006d61707403000000737472740a00
*000073706c69746c696e6573740500000073706c697474030000006d617874030000006c656e74
*03000000696e747406000000736561726368740500000067726f7570740800000066696e646974
*65725202000000524300000074150000006765745f706b675f696e666f5f7265766973696f6e28
*10000000522000000074080000007265766973696f6e740500000075726c726574050000007265
*767265740400000062617365523e000000740500000066696c6573524f00000052460000007406
*00000064697275726c74040000005f5b315d521200000074080000006c6f63616c726576740400
*00005f5b325d74010000006d7408000000626173655f75726c2800000000280000000073340000
*006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d61
*6e645c6567675f696e666f2e7079525c000000ce000000733c000000000106010f010f0213000f
*010d01070107010d011e010c010a0220011b010b010e015e01100118014a021001070103011001
*0e0110010701070113026301000000030000000300000043000000734a00000074000069010069
*02007c00006903006401008302007d01007404007c00006905008301007d02007c01007c02005f
*06007c0200690700830000017c02006908007c00005f0800640200532803000000732200000047
*656e657261746520534f55524345532e747874206d616e69666573742066696c65730b00000053
*4f55524345532e7478744e2809000000523100000052340000005235000000520f000000740e00
*00006d616e69666573745f6d616b6572522900000074080000006d616e6966657374525b000000
*740800000066696c656c6973742803000000522000000074110000006d616e69666573745f6669
*6c656e616d6574020000006d6d2800000000280000000073340000006275696c645c6264697374
*2e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c6567675f696e666f2e
*70795257000000f7000000730a000000000218010f0109010a0163010000000200000004000000
*4300000073920000007c0000690000640100177d01007c00006901007402006903006a03006f1c
*00017402006904006905007c00006901007c01008302007d01006e010001740200690400690600
*7c01008301006f3f0001740700690800640200640300146404001764020064030014177c01007c
*0000690900830300017c00006909007c00005f0a007c01007c00005f09006e0100016400005328
*050000004e73090000002e6567672d696e666f5228000000694e00000073a60000000a4e6f7465
*3a20596f75722063757272656e74202e6567672d696e666f206469726563746f72792068617320
*6120272d2720696e20697473206e616d653b0a746869732077696c6c206e6f7420776f726b2063
*6f72726563746c792077697468202273657475702e707920646576656c6f70222e0a0a506c6561
*73652072656e616d6520257320746f20257320746f20636f727265637420746869732070726f62
*6c656d2e0a280b0000005217000000521900000052310000005232000000523400000052350000
*00524200000052020000005243000000520f000000521e00000028020000005220000000740300
*00006265692800000000280000000073340000006275696c645c62646973742e77696e33325c65
*67675c7365747570746f6f6c735c636f6d6d616e645c6567675f696e666f2e70795236000000ff
*000000731200000000010d0113011c011301060413010d020c0128030000007309000000656767
*2d626173653d5210000000734c0000006469726563746f727920636f6e7461696e696e67202e65
*67672d696e666f206469726563746f72696573202864656661756c743a20746f70206f66207468
*6520736f75726365207472656529280300000073100000007461672d73766e2d7265766973696f
*6e5211000000732c0000004164642073756276657273696f6e207265766973696f6e2049442074
*6f2076657273696f6e206e756d626572280300000073080000007461672d646174655212000000
*73300000004164642064617465207374616d702028652e672e2032303035303532382920746f20
*76657273696f6e206e756d6265722803000000730a0000007461672d6275696c643d5213000000
*732d00000053706563696679206578706c696369742074616720746f2061646420746f20766572
*73696f6e206e756d6265722803000000730f0000006e6f2d73766e2d7265766973696f6e521400
*0000732a000000446f6e2774206164642073756276657273696f6e207265766973696f6e204944
*205b64656661756c745d280300000073070000006e6f2d6461746552150000007322000000446f
*6e277420696e636c7564652064617465207374616d70205b64656661756c745d28130000007408
*0000005f5f6e616d655f5f740a0000005f5f6d6f64756c655f5f740b0000006465736372697074
*696f6e740c000000757365725f6f7074696f6e73740f000000626f6f6c65616e5f6f7074696f6e
*73740c0000006e656761746976655f6f7074522100000052260000005240000000521d00000052
*4800000052410000005244000000522b000000525b0000005224000000525c0000005257000000
*523600000028000000002800000000280000000073340000006275696c645c62646973742e7769
*6e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c6567675f696e666f2e707952
*0f00000011000000733000000006010603030200010301030103010001030109030c010a010a08
*090b091e09290c14090c09060903090e091b092909085205000000630000000000000000010000
*004200000073170000006500005a01006400005a02006401008400005a03005253280200000073
*4000000046696c65206c69737420746861742061636365707473206f6e6c79206578697374696e
*672c20706c6174666f726d2d696e646570656e64656e7420706174687363020000000300000003
*0000004300000073550000007c01006900006401008301006f0e00017c0100640200207d01006e
*0100017401007c01008301007d02007402006903006904007c02008301006f1400017c00006905
*006906007c0200830100016e0100016400005328030000004e73010000000d69ffffffff280700
*00007408000000656e647377697468520400000052310000005234000000524200000052780000
*007406000000617070656e642803000000522000000074040000006974656d5234000000280000
*0000280000000073340000006275696c645c62646973742e77696e33325c6567675c7365747570
*746f6f6c735c636f6d6d616e645c6567675f696e666f2e7079528c00000011010000730a000000
*000110010e010c01130128040000005285000000528600000074070000005f5f646f635f5f528c
*00000028000000002800000000280000000073340000006275696c645c62646973742e77696e33
*325c6567675c7365747570746f6f6c735c636f6d6d616e645c6567675f696e666f2e7079520500
*00000e010000730400000006010602527f0000006300000000000000000100000042000000734d
*0000006500005a01006400005a02006401008400005a03006402008400005a0400640300840000
*5a05006404008400005a06006405008400005a07006406008400005a08006407008400005a0900
*52532808000000730b0000004d414e49464553542e696e63010000000100000002000000430000
*0073280000006401007c00005f00006401007c00005f01006401007c00005f02006401007c0000
*5f03006400005328020000004e69010000002804000000740c0000007573655f64656661756c74
*7374050000007072756e65740d0000006d616e69666573745f6f6e6c79740e000000666f726365
*5f6d616e6966657374280100000052200000002800000000280000000073340000006275696c64
*5c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c656767
*5f696e666f2e707952210000002401000073080000000001090109010901630100000001000000
*010000004300000073040000006400005328010000004e28000000002801000000522000000028
*00000000280000000073340000006275696c645c62646973742e77696e33325c6567675c736574
*7570746f6f6c735c636f6d6d616e645c6567675f696e666f2e707952400000002a010000730200
*000000016301000000010000000200000043000000739d0000007400008300007c00005f010074
*02006903006904007c0000690500830100700e00017c0000690600830000016e0100017c000069
*0100690700830000017c0000690800830000017402006903006904007c00006909008301006f0e
*00017c0000690a00830000016e0100017c0000690b00830000017c0000690100690c0083000001
*7c0000690100690d00830000017c0000690600830000016400005328010000004e280e00000052
*0500000052810000005231000000523400000052420000005280000000740e0000007772697465
*5f6d616e6966657374740700000066696e64616c6c740c0000006164645f64656661756c747374
*0800000074656d706c617465740d000000726561645f74656d706c617465740f0000007072756e
*655f66696c655f6c6973747404000000736f7274741100000072656d6f76655f6475706c696361
*746573280100000052200000002800000000280000000073340000006275696c645c6264697374
*2e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c6567675f696e666f2e
*7079525b0000002d010000731600000000010c0116010e010d010a0116010e010a010d010d0163
*0100000004000000070000004300000073770000007c00006900006901007d0100740200690300
*6401006a03006f340001670000047d02007c0100445d1c007d03007c02007c0300690400740200
*690300640100830200127127007e02007d01006e0100017c00006905007406007c00006907007c
*01006602006402007c0000690700168303000164030053280400000073b2000000577269746520
*7468652066696c65206c69737420696e202773656c662e66696c656c6973742720287072657375
*6d61626c792061732066696c6c656420696e0a2020202020202020627920276164645f64656661
*756c747328292720616e642027726561645f74656d706c6174652829272920746f20746865206d
*616e69666573742066696c650a20202020202020206e616d6564206279202773656c662e6d616e
*6966657374272e0a20202020202020205262000000731a00000077726974696e67206d616e6966
*6573742066696c6520272573274e28080000005281000000527800000052310000007403000000
*73657074070000007265706c616365740700000065786563757465524100000052800000002804
*00000052200000005278000000527a000000524f00000028000000002800000000733400000062
*75696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e64
*5c6567675f696e666f2e707952930000003a010000730a00000000050c01100134011501630200
*000002000000030000004300000073280000007c01006900006401008301007014000174010069
*02007c00007c0100830200016e0100016400005328020000004e73180000007374616e64617264
*2066696c65206e6f7420666f756e643a2803000000526800000052030000005243000000280200
*0000522000000074030000006d73672800000000280000000073340000006275696c645c626469
*73742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c6567675f696e66
*6f2e70795243000000450100007304000000000110016301000000030000000400000043000000
*73ad0000007400006901007c0000830100017c00006902006903007c0000690400830100017c00
*006902006903007c0000690500830100017406007407008300008301007d01007c01006f140001
*7c00006902006908007c0100830100016e250001740900690a00690b007c00006905008301006f
*0e00017c0000690c00830000016e0100017c0000690d006401008301007d02007c000069020069
*0e006402006403007c0200690f00830101016400005328040000004e520f000000520100000074
*060000007072656669782810000000520300000052950000005281000000528c00000052960000
*005280000000522c000000520e0000007406000000657874656e64523100000052340000005242
*000000740d000000726561645f6d616e696665737474150000006765745f66696e616c697a6564
*5f636f6d6d616e64740f000000696e636c7564655f7061747465726e520f000000280300000052
*200000007407000000726366696c6573740600000065695f636d64280000000028000000007334
*0000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d
*6d616e645c6567675f696e666f2e7079529500000049010000731400000000010d01130113010f
*010701140116010e010f01630100000004000000040000004300000073810000007c0000690000
*6401008301007d01007c00006901006902008300007d02007c0000690300690400640000640200
*7c0100690600830101017c00006903006904006400006402007c02008301010174070069080074
*0900690a008301007d03007c00006903006904007c0300640300177c0300176404006405008301
*01016400005328060000004e74050000006275696c64529f000000730f000000285243537c4356
*537c5c2e73766e29740800000069735f72656765786901000000280b00000052a2000000522900
*0000740c0000006765745f66756c6c6e616d655281000000740f0000006578636c7564655f7061
*747465726e5216000000740a0000006275696c645f626173655263000000740600000065736361
*70655231000000529b0000002804000000522000000052a60000007408000000626173655f6469
*72529b0000002800000000280000000073340000006275696c645c62646973742e77696e33325c
*6567675c7365747570746f6f6c735c636f6d6d616e645c6567675f696e666f2e70795298000000
*55010000730c00000000010f010f01190116011201280a00000052850000005286000000529600
*000052210000005240000000525b00000052930000005243000000529500000052980000002800
*0000002800000000280000000073340000006275696c645c62646973742e77696e33325c656767
*5c7365747570746f6f6c735c636f6d6d616e645c6567675f696e666f2e7079527f000000200100
*0073100000000602060209060903090d090b0904090c6302000000030000000300000043000000
*73330000007400007c00006401008302007d02007c02006901006402006902007c010083010083
*0100017c020069030083000001640300532804000000737b00000043726561746520612066696c
*6520776974682074686520737065636966696564206e616d6520616e642077726974652027636f
*6e74656e7473272028610a2020202073657175656e6365206f6620737472696e67732077697468
*6f7574206c696e65207465726d696e61746f72732920746f2069742e0a20202020524900000073
*010000000a4e2804000000524c000000524d0000005235000000524e0000002803000000522500
*00007408000000636f6e74656e7473524f0000002800000000280000000073340000006275696c
*645c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c6567
*675f696e666f2e707952410000005e010000730600000000040f01160163030000000800000007
*0000004300000073b90000007400006901006401007c0200830200017c0000690200709b00017c
*00006903006904007d03007c00006905007c0300690600027c03005f06007d04007c0000690700
*7c0300690800027c03005f08007d05007a14007c03006909007c0000690a008301000157640000
*7c05007c0400027c03005f08007c03005f060058740b007c00006903006402006400008303007d
*06006403006400006b0d007d07007c0700690e007c0000690a007c0600830200016e0100016400
*005328040000004e730a00000077726974696e6720257374080000007a69705f7361666569ffff
*ffff280f0000005202000000524a000000524b0000005229000000523700000052180000005238
*00000052170000005256000000740e00000077726974655f706b675f696e666f520f0000007407
*000000676574617474725216000000740900000062646973745f65676774110000007772697465
*5f7361666574795f666c616728080000007403000000636d647408000000626173656e616d6552
*25000000523700000074060000006f6c6476657274070000006f6c646e616d6574040000007361
*666552b10000002800000000280000000073340000006275696c645c62646973742e77696e3332
*5c6567675c7365747570746f6f6c735c636f6d6d616e645c6567675f696e666f2e707952af0000
*00720100007316000000000110010a010c011601160103031402140215010c0063030000000300
*0000020000004300000073280000007400006901006902007c02008301006f1100017403006904
*00640100830100016e0100016400005328020000004e73730000005741524e494e473a20276465
*70656e64732e74787427206973206e6f742075736564206279207365747570746f6f6c7320302e
*36210a5573652074686520696e7374616c6c5f72657175697265732f6578747261735f72657175
*6972652073657475702829206172677320696e73746561642e2805000000523100000052340000
*00524200000052020000005243000000280300000052b300000052b40000005225000000280000
*0000280000000073340000006275696c645c62646973742e77696e33325c6567675c7365747570
*746f6f6c735c636f6d6d616e645c6567675f696e666f2e707974150000007761726e5f64657065
*6e64735f6f62736f6c657465820100007306000000000113010601630300000007000000070000
*004300000073980000007c00006900007d03006401006901007402007c03006903007004000164
*05008301008301006701007d0400784a007c030069040070040001680000690500830000445d32
*005c02007d05007d06007c04006906006402007c05006401006901007402007c06008301008301
*006602001683010001714200577c00006907006403007c02006404006901007c04008301008303
*00016400005328060000004e73010000000a73090000000a0a5b25735d0a2573740c0000007265
*71756972656d656e747352270000002800000000280800000052290000005235000000520a0000
*007410000000696e7374616c6c5f7265717569726573740e0000006578747261735f7265717569
*726574050000006974656d73528c0000005248000000280700000052b300000052b40000005225
*000000740400000064697374524600000074050000006578747261740400000072657173280000
*0000280000000073340000006275696c645c62646973742e77696e33325c6567675c7365747570
*746f6f6c735c636f6d6d616e645c6567675f696e666f2e7079741200000077726974655f726571
*756972656d656e74738a010000730c00000000010901220117000c012a01630300000006000000
*07000000430000007367000000740000690100670000047d03007c000069020069030083000044
*5d1d007d04007c03007c04006904006401006402008302006403001912711a007e03008301007d
*05007c00006905006404007c02006405006906007c050083010064050017830300016400005328
*060000004e74010000002e69010000006900000000730f000000746f702d6c6576656c206e616d
*657373010000000a2807000000740400000064696374740800000066726f6d6b65797352290000
*007417000000697465725f646973747269627574696f6e5f6e616d6573526c0000005241000000
*5235000000280600000052b300000052b40000005225000000527a00000074010000006b740400
*0000706b67732800000000280000000073340000006275696c645c62646973742e77696e33325c
*6567675c7365747570746f6f6c735c636f6d6d616e645c6567675f696e666f2e70797414000000
*77726974655f746f706c6576656c5f6e616d657391010000730800000000010601070136036303
*00000003000000050000004300000073170000007400007c00007c01007c020074010083040001
*6400005328010000004e2802000000740900000077726974655f61726774040000005472756528
*0300000052b300000052b400000052250000002800000000280000000073340000006275696c64
*5c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c656767
*5f696e666f2e7079740d0000006f76657277726974655f6172679b010000730200000000016304
*00000006000000050000004300000073690000007400006901006902007c010083010064010019
*7d04007403007c00006904007c04006400008303007d05007c05006400006a09006f1700016402
*006906007c0500830100640200177d05006e0100017c00006907007c04007c02007c05007c0300
*830400016400005328030000004e690000000073010000000a2808000000523100000052340000
*00740800000073706c697465787452b00000005229000000521600000052350000005248000000
*280600000052b300000052b40000005225000000524700000074070000006172676e616d657405
*00000076616c75652800000000280000000073340000006275696c645c62646973742e77696e33
*325c6567675c7365747570746f6f6c735c636f6d6d616e645c6567675f696e666f2e707952c800
*00009e010000730a0000000001160115010d011701630300000007000000070000004300000073
*eb0000007c00006900006901007d03007402007c0300740300830200700d00017c03006400006a
*08006f0a00017c03007d04006e9f00017c03006400006a09006f9100016700007d04007875007c
*0300690500830000445d67005c02007d05007d06007402007c0600740300830200703400017406
*006907007c05007c06008302007d0600640100690800740900740a007c0600690b008300008302
*008301007d06006e0100017c0400690c006402007c05007c060066020016830100017153005764
*03006908007c04008301007d04006e0100017c0000690d006404007c02007c0400740e00830400
*016400005328050000004e73010000000a73090000005b25735d0a25730a0a5227000000730c00
*0000656e74727920706f696e7473280f0000005229000000740c000000656e7472795f706f696e
*7473740a0000006973696e7374616e6365740a00000062617365737472696e67521600000052bc
*000000520b000000740b00000070617273655f67726f757052350000005269000000526a000000
*740600000076616c756573528c000000524800000052c9000000280700000052b300000052b400
*0000522500000052580000005246000000740700000073656374696f6e52ad0000002800000000
*280000000073340000006275696c645c62646973742e77696e33325c6567675c7365747570746f
*6f6c735c636f6d6d616e645c6567675f696e666f2e7079740d00000077726974655f656e747269
*6573a5010000731a00000000010c021d010a010d0106010d000c011001120122011b0113026300
*00000003000000040000004300000073680000007400006901006902006401008301006f510001
*7403006401006402008302007d0000783f007c0000445d33007d01007404006905006403007c01
*008302007d02007c02006f1400017406007c02006907006404008301008301005301712900576e
*0100016405005328060000004e7308000000504b472d494e464f74020000007255731500000056
*657273696f6e3a2e2a2d72285c642b295c732a2469010000006900000000280800000052310000
*0052340000005242000000524c000000526300000074050000006d61746368526f000000527100
*00002803000000524f00000074040000006c696e6552d600000028000000002800000000733400
*00006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d
*616e645c6567675f696e666f2e70795273000000b50100007310000000000413010f0107000601
*120107011c012824000000528e00000052310000005263000000740a0000007365747570746f6f
*6c7352000000007410000000646973747574696c732e6572726f72737409000000646973747574
*696c73520200000074180000007365747570746f6f6c732e636f6d6d616e642e73646973745203
*000000740e000000646973747574696c732e7574696c5204000000741200000064697374757469
*6c732e66696c656c6973745205000000740d000000706b675f7265736f75726365735206000000
*520700000052080000005209000000520a000000520b000000520c000000520d000000520e0000
*00520f000000527f000000524100000052af00000052b800000052c000000052c700000052ca00
*0000521d00000052c800000052d400000052730000002800000000280000000028000000007334
*0000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d
*6d616e645c6567675f696e666f2e707974080000003c6d6f64756c653e03000000732a00000006
*03180110010a0110011001100110013a02100216fd1612163e0914091009080907090a09030c07
*0910
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/install.py
hunk ./setuptools-0.6c14devdev.egg/setuptools/command/install.py 1
+import setuptools, sys, glob
+from distutils.command.install import install as _install
+from distutils.errors import DistutilsArgError
+
+class install(_install):
+    """Use easy_install to install the package, w/dependencies"""
+
+    user_options = _install.user_options + [
+        ('old-and-unmanageable', None, "Try not to use this!"),
+        ('single-version-externally-managed', None,
+            "used by system package builders to create 'flat' eggs"),
+    ]
+    boolean_options = _install.boolean_options + [
+        'old-and-unmanageable', 'single-version-externally-managed',
+    ]
+    new_commands = [
+        ('install_egg_info', lambda self: True),
+        ('install_scripts',  lambda self: True),
+    ]
+    _nc = dict(new_commands)
+    sub_commands = [
+        cmd for cmd in _install.sub_commands if cmd[0] not in _nc
+    ] + new_commands
+
+    def initialize_options(self):
+        _install.initialize_options(self)
+        self.old_and_unmanageable = None
+        self.single_version_externally_managed = None
+        self.no_compile = None  # make DISTUTILS_DEBUG work right!
+
+    def finalize_options(self):
+        _install.finalize_options(self)
+        if self.root:
+            self.single_version_externally_managed = True
+        elif self.single_version_externally_managed:
+            if not self.root and not self.record:
+                raise DistutilsArgError(
+                    "You must specify --record or --root when building system"
+                    " packages"
+                )
+
+    def handle_extra_path(self):
+        if self.root or self.single_version_externally_managed:
+            # explicit backward-compatibility mode, allow extra_path to work
+            return _install.handle_extra_path(self)
+
+        # Ignore extra_path when installing an egg (or being run by another
+        # command without --root or --single-version-externally-managed
+        self.path_file = None
+        self.extra_dirs = ''
+
+
+    def run(self):
+        # Explicit request for old-style install?  Just do it
+        if self.old_and_unmanageable or self.single_version_externally_managed:
+            return _install.run(self)
+
+        # Attempt to detect whether we were called from setup() or by another
+        # command.  If we were called by setup(), our caller will be the
+        # 'run_command' method in 'distutils.dist', and *its* caller will be
+        # the 'run_commands' method.  If we were called any other way, our
+        # immediate caller *might* be 'run_command', but it won't have been
+        # called by 'run_commands'.  This is slightly kludgy, but seems to
+        # work.
+        #
+        caller = sys._getframe(2)
+        caller_module = caller.f_globals.get('__name__','')
+        caller_name = caller.f_code.co_name
+
+        if caller_module != 'distutils.dist' or caller_name!='run_commands':
+            # We weren't called from the command line or setup(), so we
+            # should run in backward-compatibility mode to support bdist_*
+            # commands.
+            _install.run(self)
+        else:
+            self.do_egg_install()
+
+
+
+
+
+
+    def do_egg_install(self):
+
+        easy_install = self.distribution.get_command_class('easy_install')
+
+        cmd = easy_install(
+            self.distribution, args="x", root=self.root, record=self.record,
+        )
+        cmd.ensure_finalized()  # finalize before bdist_egg munges install cmd
+        cmd.always_copy_from = '.'  # make sure local-dir eggs get installed
+
+        # pick up setup-dir .egg files only: no .egg-info
+        cmd.package_index.scan(glob.glob('*.egg'))
+
+        self.run_command('bdist_egg')
+        args = [self.distribution.get_command_obj('bdist_egg').egg_output]
+
+        if setuptools.bootstrap_install_from:
+            # Bootstrap self-installation of setuptools
+            args.insert(0, setuptools.bootstrap_install_from)
+
+        cmd.args = args
+        cmd.run()
+        setuptools.bootstrap_install_from = None
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/install.pyc
binary ./setuptools-0.6c14devdev.egg/setuptools/command/install.pyc
oldhex
*
newhex
*d1f20d0a421ef84b6300000000000000000800000040000000735e0000006400006401006b0000
*5a00006400006401006b01005a01006400006401006b02005a02006400006402006b03006c0400
*5a0500016400006403006b06006c07005a07000164040065050066010064050084000083000059
*5a040064010053280600000069ffffffff4e28010000007407000000696e7374616c6c28010000
*007411000000446973747574696c734172674572726f7252000000006300000000000000000500
*00004200000073c80000006500005a01006400005a020065030069040064100064110067020017
*5a0400650300690600640100640300670200175a06006405006406008400006602006407006408
*008400006602006702005a07006508006507008301005a0900670000045a0a00650300690b0044
*5d22005a0c00650c00640900196509006a07006f0b0001650a00650c0012716a0001716a005b0a
*00650700175a0b00640a008400005a0d00640b008400005a0e00640c008400005a0f00640d0084
*00005a1000640e008400005a110052532812000000733700000055736520656173795f696e7374
*616c6c20746f20696e7374616c6c20746865207061636b6167652c20772f646570656e64656e63
*69657373140000006f6c642d616e642d756e6d616e61676561626c657314000000547279206e6f
*7420746f20757365207468697321732100000073696e676c652d76657273696f6e2d6578746572
*6e616c6c792d6d616e616765647335000000757365642062792073797374656d207061636b6167
*65206275696c6465727320746f206372656174652027666c61742720656767737410000000696e
*7374616c6c5f6567675f696e666f63010000000100000001000000430000007304000000740000
*53280000000028010000007404000000547275652801000000740400000073656c662800000000
*280000000073330000006275696c645c62646973742e77696e33325c6567675c7365747570746f
*6f6c735c636f6d6d616e645c696e7374616c6c2e707974080000003c6c616d6264613e11000000
*7300000000740f000000696e7374616c6c5f736372697074736301000000010000000100000043
*000000730400000074000053280000000028010000005203000000280100000052040000002800
*000000280000000073330000006275696c645c62646973742e77696e33325c6567675c73657475
*70746f6f6c735c636f6d6d616e645c696e7374616c6c2e70795205000000120000007300000000
*69000000006301000000010000000200000043000000732c0000007400006901007c0000830100
*016400007c00005f03006400007c00005f04006400007c00005f05006400005328010000004e28
*0600000074080000005f696e7374616c6c7412000000696e697469616c697a655f6f7074696f6e
*7374040000004e6f6e6574140000006f6c645f616e645f756e6d616e61676561626c6574210000
*0073696e676c655f76657273696f6e5f65787465726e616c6c795f6d616e61676564740a000000
*6e6f5f636f6d70696c65280100000052040000002800000000280000000073330000006275696c
*645c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c696e
*7374616c6c2e7079520800000019000000730800000000010d0109010901630100000001000000
*0200000043000000735c0000007400006901007c0000830100017c00006902006f0d0001740300
*7c00005f04006e3500017c00006904006f2a00017c00006902000c6f1b00017c00006905000c6f
*100001740600640100830100820100715800016e0100016400005328020000004e734100000059
*6f75206d7573742073706563696679202d2d7265636f7264206f72202d2d726f6f74207768656e
*206275696c64696e672073797374656d207061636b616765732807000000520700000074100000
*0066696e616c697a655f6f7074696f6e737404000000726f6f745203000000520b000000740600
*00007265636f726452010000002801000000520400000028000000002800000000733300000062
*75696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e64
*5c696e7374616c6c2e7079520d0000001f000000730e00000000010d010a010d010a0116010301
*630100000001000000020000004300000073380000007c0000690000700a00017c00006901006f
*0e00017402006903007c000083010053016400007c00005f05006401007c00005f060064000053
*28020000004e74000000002807000000520e000000520b0000005207000000741100000068616e
*646c655f65787472615f7061746852090000007409000000706174685f66696c65740a00000065
*787472615f64697273280100000052040000002800000000280000000073330000006275696c64
*5c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c696e73
*74616c6c2e707952110000002a0000007308000000000114020e04090163010000000400000003
*00000043000000738b0000007c0000690000700a00017c00006901006f0e00017402006903007c
*000083010053017404006905006401008301007d01007c01006906006907006402006403008302
*007d02007c01006908006909007d03007c02006404006a0300700d00017c03006405006a03006f
*1100017402006903007c0000830100016e0b00017c0000690a0083000001640000532806000000
*4e690200000074080000005f5f6e616d655f5f5210000000730e000000646973747574696c732e
*64697374740c00000072756e5f636f6d6d616e6473280b000000520a000000520b000000520700
*0000740300000072756e740300000073797374090000005f6765746672616d657409000000665f
*676c6f62616c7374030000006765747406000000665f636f64657407000000636f5f6e616d6574
*0e000000646f5f6567675f696e7374616c6c28040000005204000000740600000063616c6c6572
*740d00000063616c6c65725f6d6f64756c65740b00000063616c6c65725f6e616d652800000000
*280000000073330000006275696c645c62646973742e77696e33325c6567675c7365747570746f
*6f6c735c636f6d6d616e645c696e7374616c6c2e70795216000000350000007310000000000214
*010e0a0f0115010c021a041102630100000004000000080000004300000073cb0000007c000069
*00006901006401008301007d01007c01007c00006900006402006403006404007c000069020064
*05007c00006903008301037d02007c0200690400830000016406007c02005f05007c0200690600
*690700740800690800640700830100830100017c0000690900640800830100017c000069000069
*0a00640800830100690b006701007d0300740c00690d006f1700017c0300690e00640900740c00
*690d00830200016e0100017c03007c02005f0f007c020069100083000001640000740c005f0d00
*64000053280a0000004e740c000000656173795f696e7374616c6c740400000061726773740100
*000078520e000000520f00000074010000002e73050000002a2e65676774090000006264697374
*5f65676769000000002812000000740c000000646973747269627574696f6e7411000000676574
*5f636f6d6d616e645f636c617373520e000000520f0000007410000000656e737572655f66696e
*616c697a65647410000000616c776179735f636f70795f66726f6d740d0000007061636b616765
*5f696e64657874040000007363616e7404000000676c6f62740b00000072756e5f636f6d6d616e
*64740f0000006765745f636f6d6d616e645f6f626a740a0000006567675f6f7574707574740a00
*00007365747570746f6f6c737416000000626f6f7473747261705f696e7374616c6c5f66726f6d
*7406000000696e7365727452220000005216000000520900000028040000005204000000522100
*00007403000000636d6452220000002800000000280000000073330000006275696c645c626469
*73742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c696e7374616c6c
*2e7079521d00000053000000731a00000000021202030124020a01090319020d0118020a021702
*09010a014e280300000073140000006f6c642d616e642d756e6d616e61676561626c654e731400
*0000547279206e6f7420746f207573652074686973212803000000732100000073696e676c652d
*76657273696f6e2d65787465726e616c6c792d6d616e616765644e733500000075736564206279
*2073797374656d207061636b616765206275696c6465727320746f206372656174652027666c61
*7427206567677328120000005214000000740a0000005f5f6d6f64756c655f5f74070000005f5f
*646f635f5f5207000000740c000000757365725f6f7074696f6e735209000000740f000000626f
*6f6c65616e5f6f7074696f6e73740c0000006e65775f636f6d6d616e6473740400000064696374
*74030000005f6e6374040000005f5b315d740c0000007375625f636f6d6d616e64735233000000
*5208000000520d00000052110000005216000000521d0000002800000000280000000028000000
*0073330000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c
*636f6d6d616e645c696e7374616c6c2e7079520000000005000000732200000006010602060103
*0100010a0206010d030c0112020c02360107020906090b090b091e280800000052300000005217
*000000522c0000007419000000646973747574696c732e636f6d6d616e642e696e7374616c6c52
*0000000052070000007410000000646973747574696c732e6572726f7273520100000028000000
*002800000000280000000073330000006275696c645c62646973742e77696e33325c6567675c73
*65747570746f6f6c735c636f6d6d616e645c696e7374616c6c2e707974080000003c6d6f64756c
*653e010000007306000000240110011002
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/install_egg_info.py
hunk ./setuptools-0.6c14devdev.egg/setuptools/command/install_egg_info.py 1
+from setuptools import Command
+from setuptools.archive_util import unpack_archive
+from distutils import log, dir_util
+import os, shutil, pkg_resources
+
+class install_egg_info(Command):
+    """Install an .egg-info directory for the package"""
+
+    description = "Install an .egg-info directory for the package"
+
+    user_options = [
+        ('install-dir=', 'd', "directory to install to"),
+    ]
+
+    def initialize_options(self):
+        self.install_dir = None
+
+    def finalize_options(self):
+        self.set_undefined_options('install_lib',('install_dir','install_dir'))
+        ei_cmd = self.get_finalized_command("egg_info")
+        basename = pkg_resources.Distribution(
+            None, None, ei_cmd.egg_name, ei_cmd.egg_version
+        ).egg_name()+'.egg-info'
+        self.source = ei_cmd.egg_info
+        self.target = os.path.join(self.install_dir, basename)
+        self.outputs = [self.target]
+
+    def run(self):
+        self.run_command('egg_info')
+        target = self.target
+        if os.path.isdir(self.target) and not os.path.islink(self.target):
+            dir_util.remove_tree(self.target, dry_run=self.dry_run)
+        elif os.path.exists(self.target):
+            self.execute(os.unlink,(self.target,),"Removing "+self.target)
+        if not self.dry_run:
+            pkg_resources.ensure_directory(self.target)
+        self.execute(self.copytree, (),
+            "Copying %s to %s" % (self.source, self.target)
+        )
+        self.install_namespaces()
+
+    def get_outputs(self):
+        return self.outputs
+
+    def copytree(self):
+        # Copy the .egg-info tree to site-packages
+        def skimmer(src,dst):
+            # filter out source-control directories; note that 'src' is always
+            # a '/'-separated path, regardless of platform.  'dst' is a
+            # platform-specific path.
+            for skip in '.svn/','CVS/':
+                if src.startswith(skip) or '/'+skip in src:
+                    return None
+            self.outputs.append(dst)
+            log.debug("Copying %s to %s", src, dst)
+            return dst
+        unpack_archive(self.source, self.target, skimmer)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    def install_namespaces(self):
+        nsp = self._get_all_ns_packages()
+        if not nsp: return
+        filename,ext = os.path.splitext(self.target)
+        filename += '-nspkg.pth'; self.outputs.append(filename)
+        log.info("Installing %s",filename)
+        if not self.dry_run:
+            f = open(filename,'wb')
+            for pkg in nsp:
+                pth = tuple(pkg.split('.'))
+                trailer = '\n'
+                if '.' in pkg:
+                    trailer = (
+                        "; m and setattr(sys.modules[%r], %r, m)\n"
+                        % ('.'.join(pth[:-1]), pth[-1])
+                    )
+                f.write(
+                    "import sys,new,os; "
+                    "p = os.path.join(sys._getframe(1).f_locals['sitedir'], "
+                        "*%(pth)r); "
+                    "ie = os.path.exists(os.path.join(p,'__init__.py')); "
+                    "m = not ie and "
+                        "sys.modules.setdefault(%(pkg)r,new.module(%(pkg)r)); "
+                    "mp = (m or []) and m.__dict__.setdefault('__path__',[]); "
+                    "(p not in mp) and mp.append(p)%(trailer)s"
+                    % locals()
+                )
+            f.close()
+
+    def _get_all_ns_packages(self):
+        nsp = {}
+        for pkg in self.distribution.namespace_packages or []:
+            pkg = pkg.split('.')
+            while pkg:
+                nsp['.'.join(pkg)] = 1
+                pkg.pop()
+        nsp=list(nsp)
+        nsp.sort()  # set up shorter names first
+        return nsp
+
+
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/install_egg_info.pyc
binary ./setuptools-0.6c14devdev.egg/setuptools/command/install_egg_info.pyc
oldhex
*
newhex
*d1f20d0a431ef84b630000000000000000090000004000000073740000006400006401006b0000
*6c01005a0100016400006402006b02006c03005a0300016400006403006b04006c05005a05006c
*06005a0600016400006404006b07005a07006400006404006b08005a08006400006404006b0900
*5a0900640500650100660100640600840000830000595a0a0064040053280700000069ffffffff
*28010000007407000000436f6d6d616e642801000000740e000000756e7061636b5f6172636869
*7665280200000074030000006c6f6774080000006469725f7574696c4e7410000000696e737461
*6c6c5f6567675f696e666f6300000000000000000300000042000000735c0000006500005a0100
*6400005a02006400005a0300640b006701005a04006404008400005a05006405008400005a0600
*6406008400005a07006407008400005a08006408008400005a09006409008400005a0a00640a00
*8400005a0b005253280c000000732e000000496e7374616c6c20616e202e6567672d696e666f20
*6469726563746f727920666f7220746865207061636b616765730c000000696e7374616c6c2d64
*69723d74010000006473170000006469726563746f727920746f20696e7374616c6c20746f6301
*000000010000000200000043000000730d0000006400007c00005f01006400005328010000004e
*280200000074040000004e6f6e65740b000000696e7374616c6c5f646972280100000074040000
*0073656c6628000000002800000000733c0000006275696c645c62646973742e77696e33325c65
*67675c7365747570746f6f6c735c636f6d6d616e645c696e7374616c6c5f6567675f696e666f2e
*70797412000000696e697469616c697a655f6f7074696f6e730f00000073020000000001630100
*000003000000050000004300000073810000007c0000690000640100640500830200017c000069
*01006403008301007d01007402006903006400006400007c01006905007c010069060083040069
*0500830000640400177d02007c01006907007c00005f0800740900690a00690b007c0000690c00
*7c02008302007c00005f0d007c0000690d006701007c00005f0e006400005328060000004e740b
*000000696e7374616c6c5f6c6962520700000074080000006567675f696e666f73090000002e65
*67672d696e666f2802000000730b000000696e7374616c6c5f646972730b000000696e7374616c
*6c5f646972280f00000074150000007365745f756e646566696e65645f6f7074696f6e73741500
*00006765745f66696e616c697a65645f636f6d6d616e64740d000000706b675f7265736f757263
*6573740c000000446973747269627574696f6e520600000074080000006567675f6e616d65740b
*0000006567675f76657273696f6e520b0000007406000000736f7572636574020000006f737404
*0000007061746874040000006a6f696e5207000000740600000074617267657474070000006f75
*747075747328030000005208000000740600000065695f636d647408000000626173656e616d65
*28000000002800000000733c0000006275696c645c62646973742e77696e33325c6567675c7365
*747570746f6f6c735c636f6d6d616e645c696e7374616c6c5f6567675f696e666f2e7079741000
*000066696e616c697a655f6f7074696f6e73120000007310000000000110010f0106011b010701
*0c011b01630100000002000000060000004300000073ef0000007c000069000064010083010001
*7c00006901007d01007402006903006904007c00006901008301006f3400017402006903006905
*007c00006901008301000c6f1d00017406006907007c00006901006402007c0000690800830101
*016e3e00017402006903006909007c00006901008301006f2700017c0000690a00740200690b00
*7c00006901006601006403007c000069010017830300016e0100017c000069080070140001740c
*00690d007c0000690100830100016e0100017c0000690a007c0000690e006405006404007c0000
*690f007c000069010066020016830300017c0000691000830000016400005328060000004e520b
*00000074070000006472795f72756e730900000052656d6f76696e67207310000000436f707969
*6e6720257320746f20257328000000002811000000740b00000072756e5f636f6d6d616e645216
*0000005213000000521400000074050000006973646972740600000069736c696e6b5203000000
*740b00000072656d6f76655f74726565521b000000740600000065786973747374070000006578
*65637574657406000000756e6c696e6b520e0000007410000000656e737572655f646972656374
*6f72797408000000636f70797472656552120000007412000000696e7374616c6c5f6e616d6573
*706163657328020000005208000000521600000028000000002800000000733c0000006275696c
*645c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c696e
*7374616c6c5f6567675f696e666f2e7079740300000072756e1c000000731600000000010d0109
*012d011d01160127010a0114010f01170263010000000100000001000000430000007307000000
*7c00006900005328010000004e2801000000521700000028010000005208000000280000000028
*00000000733c0000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f
*6c735c636f6d6d616e645c696e7374616c6c5f6567675f696e666f2e7079740b0000006765745f
*6f7574707574732a00000073020000000001630100000002000000050000000300000073290000
*008700006601006401008600007d01007400008800006901008800006902007c01008303000164
*00005328020000004e6302000000030000000600000013000000735e000000783400640500445d
*2c007d02007c00006900007c0200830100701100016403007c0200177c00006a06006f05000164
*00005301710700578800006902006903007c0100830100017404006905006404007c00007c0100
*830300017c01005328060000004e73050000002e73766e2f73040000004356532f74010000002f
*7310000000436f7079696e6720257320746f202573280200000073050000002e73766e2f730400
*00004356532f2806000000740a0000007374617274737769746852060000005217000000740600
*0000617070656e6452020000007405000000646562756728030000007403000000737263740300
*00006473747404000000736b6970280100000052080000002800000000733c0000006275696c64
*5c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c696e73
*74616c6c5f6567675f696e666f2e70797407000000736b696d6d65722f000000730e0000000004
*070006012101090110011301280300000052010000005212000000521600000028020000005208
*000000522f000000280000000028010000005208000000733c0000006275696c645c6264697374
*2e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c696e7374616c6c5f65
*67675f696e666f2e707952240000002d000000730400000000020f0a6301000000080000000600
*00004300000073fa0000007c00006900008300007d01007c010070050001640000530174010069
*02006903007c00006904008301005c02007d02007d03007c0200640100377d02007c0000690500
*6906007c0200830100017407006908006402007c0200830200017c0000690900708f0001740a00
*7c02006403008302007d0400786f007c0100445d67007d0500740b007c0500690c006404008301
*008301007d06006405007d07006404007c05006a06006f250001640600640400690d007c060064
*0700208301007c060064070019660200167d07006e0100017c0400690e00640800740f00830000
*1683010001717d00577c0400691000830000016e0100016400005328090000004e730a0000002d
*6e73706b672e707468730d000000496e7374616c6c696e67202573740200000077627401000000
*2e73010000000a73280000003b206d20616e642073657461747472287379732e6d6f64756c6573
*5b25725d2c2025722c206d290a69ffffffff732f010000696d706f7274207379732c6e65772c6f
*733b2070203d206f732e706174682e6a6f696e287379732e5f6765746672616d652831292e665f
*6c6f63616c735b2773697465646972275d2c202a25287074682972293b206965203d206f732e70
*6174682e657869737473286f732e706174682e6a6f696e28702c275f5f696e69745f5f2e707927
*29293b206d203d206e6f7420696520616e64207379732e6d6f64756c65732e7365746465666175
*6c74282528706b6729722c6e65772e6d6f64756c65282528706b67297229293b206d70203d2028
*6d206f72205b5d2920616e64206d2e5f5f646963745f5f2e73657464656661756c7428275f5f70
*6174685f5f272c5b5d293b202870206e6f7420696e206d702920616e64206d702e617070656e64
*2870292528747261696c65722973281100000074140000005f6765745f616c6c5f6e735f706163
*6b6167657352130000005214000000740800000073706c69746578745216000000521700000052
*2a00000052020000007404000000696e666f521b00000074040000006f70656e74050000007475
*706c65740500000073706c697452150000007405000000777269746574060000006c6f63616c73
*7405000000636c6f73652808000000520800000074030000006e7370740800000066696c656e61
*6d6574030000006578747401000000667403000000706b67740300000070746874070000007472
*61696c657228000000002800000000733c0000006275696c645c62646973742e77696e33325c65
*67675c7365747570746f6f6c735c636f6d6d616e645c696e7374616c6c5f6567675f696e666f2e
*7079522500000053000000732800000000010c01070005011b010a00100110010a010f01070006
*01150106010d0203012202060103080f0263010000000300000005000000430000007379000000
*6800007d01007856007c000069000069010070040001670000445d41007d02007c020069020064
*01008301007d02007829007c02006f2100016402007c01006401006903007c02008301003c7c02
*00690400830000017132000157711a00577405007c01008301007d01007c010069060083000001
*7c01005328030000004e523100000069010000002807000000740c000000646973747269627574
*696f6e74120000006e616d6573706163655f7061636b6167657352370000005215000000740300
*0000706f7074040000006c6973747404000000736f727428030000005208000000523b00000052
*3f00000028000000002800000000733c0000006275696c645c62646973742e77696e33325c6567
*675c7365747570746f6f6c735c636f6d6d616e645c696e7374616c6c5f6567675f696e666f2e70
*79523200000070000000731600000000010601140006010f0103000701130113010c010a012803
*000000730c000000696e7374616c6c2d6469723d520500000073170000006469726563746f7279
*20746f20696e7374616c6c20746f280c00000074080000005f5f6e616d655f5f740a0000005f5f
*6d6f64756c655f5f74070000005f5f646f635f5f740b0000006465736372697074696f6e740c00
*0000757365725f6f7074696f6e735209000000521a000000522600000052270000005224000000
*52250000005232000000280000000028000000002800000000733c0000006275696c645c626469
*73742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c696e7374616c6c
*5f6567675f696e666f2e7079520400000006000000731400000006010602060309030903090a09
*0e09030926091d280b000000740a0000007365747570746f6f6c73520000000074170000007365
*747570746f6f6c732e617263686976655f7574696c52010000007409000000646973747574696c
*73520200000052030000005213000000740600000073687574696c520e00000052040000002800
*00000028000000002800000000733c0000006275696c645c62646973742e77696e33325c656767
*5c7365747570746f6f6c735c636f6d6d616e645c696e7374616c6c5f6567675f696e666f2e7079
*74080000003c6d6f64756c653e0100000073080000001001100116012402
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/install_lib.py
hunk ./setuptools-0.6c14devdev.egg/setuptools/command/install_lib.py 1
+from distutils.command.install_lib import install_lib as _install_lib
+import os
+
+class install_lib(_install_lib):
+    """Don't add compiled flags to filenames of non-Python files"""
+
+    def _bytecode_filenames (self, py_filenames):
+        bytecode_files = []
+        for py_file in py_filenames:
+            if not py_file.endswith('.py'):
+                continue
+            if self.compile:
+                bytecode_files.append(py_file + "c")
+            if self.optimize > 0:
+                bytecode_files.append(py_file + "o")
+
+        return bytecode_files
+
+    def run(self):
+        self.build()
+        outfiles = self.install()
+        if outfiles is not None:
+            # always compile, in case we have any extension stubs to deal with
+            self.byte_compile(outfiles)
+
+    def get_exclusions(self):
+        exclude = {}
+        nsp = self.distribution.namespace_packages
+
+        if (nsp and self.get_finalized_command('install')
+               .single_version_externally_managed
+        ):
+            for pkg in nsp:
+                parts = pkg.split('.')
+                while parts:
+                    pkgdir = os.path.join(self.install_dir, *parts)
+                    for f in '__init__.py', '__init__.pyc', '__init__.pyo':
+                        exclude[os.path.join(pkgdir,f)] = 1
+                    parts.pop()
+        return exclude
+
+    def copy_tree(
+        self, infile, outfile,
+        preserve_mode=1, preserve_times=1, preserve_symlinks=0, level=1
+    ):
+        assert preserve_mode and preserve_times and not preserve_symlinks
+        exclude = self.get_exclusions()
+
+        if not exclude:
+            return _install_lib.copy_tree(self, infile, outfile)
+
+        # Exclude namespace package __init__.py* files from the output
+
+        from setuptools.archive_util import unpack_directory
+        from distutils import log
+
+        outfiles = []
+
+        def pf(src, dst):
+            if dst in exclude:
+                log.warn("Skipping installation of %s (namespace package)",dst)
+                return False
+
+            log.info("copying %s -> %s", src, os.path.dirname(dst))
+            outfiles.append(dst)
+            return dst
+
+        unpack_directory(infile, outfile, pf)
+        return outfiles
+
+    def get_outputs(self):
+        outputs = _install_lib.get_outputs(self)
+        exclude = self.get_exclusions()
+        if exclude:
+            return [f for f in outputs if f not in exclude]
+        return outputs
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/install_lib.pyc
binary ./setuptools-0.6c14devdev.egg/setuptools/command/install_lib.pyc
oldhex
*
newhex
*d1f20d0a441ef84b630000000000000000050000004000000073360000006400006401006b0000
*6c01005a0200016400006402006b03005a0300640300650200660100640400840000830000595a
*010064020053280500000069ffffffff2801000000740b000000696e7374616c6c5f6c69624e52
*00000000630000000000000000050000004200000073470000006500005a01006400005a020064
*01008400005a03006402008400005a04006403008400005a050064040064040064050064040064
*06008404005a06006407008400005a0700525328080000007339000000446f6e27742061646420
*636f6d70696c656420666c61677320746f2066696c656e616d6573206f66206e6f6e2d50797468
*6f6e2066696c6573630200000004000000040000004300000073760000006700007d0200786900
*7c0100445d61007d03007c030069000064010083010070070001710d006e0100017c0000690100
*6f1500017c02006902007c030064020017830100016e0100017c00006903006403006a04006f15
*00017c02006902007c03006404001783010001710d0001710d00577c02005328050000004e7303
*0000002e7079740100000063690000000074010000006f28040000007408000000656e64737769
*74687407000000636f6d70696c657406000000617070656e6474080000006f7074696d697a6528
*04000000740400000073656c66740c00000070795f66696c656e616d6573740e00000062797465
*636f64655f66696c6573740700000070795f66696c652800000000280000000073370000006275
*696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c
*696e7374616c6c5f6c69622e707974130000005f62797465636f64655f66696c656e616d657307
*00000073140000000001060107000601100107010a011501100119026301000000020000000200
*00004300000073380000007c0000690000830000017c00006901008300007d01007c0100640000
*6a09006f1100017c00006903007c0100830100016e0100016400005328010000004e2804000000
*74050000006275696c647407000000696e7374616c6c74040000004e6f6e65740c000000627974
*655f636f6d70696c652802000000520700000074080000006f757466696c657328000000002800
*00000073370000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c
*735c636f6d6d616e645c696e7374616c6c5f6c69622e7079740300000072756e13000000730800
*000000010a010c010d02630100000007000000070000004300000073af0000006800007d01007c
*00006900006901007d02007c02006f9200017c00006902006401008301006903006f7f0001787c
*007c0200445d70007d03007c03006904006402008301007d04007858007c04006f500001740500
*6906006907007c00006908007c04008c01007d0500782700640700445d1f007d06006406007c01
*007405006906006907007c05007c06008302003c717100577c040069090083000001714b000157
*713300576e0100017c01005328080000004e520d00000074010000002e730b0000005f5f696e69
*745f5f2e7079730c0000005f5f696e69745f5f2e707963730c0000005f5f696e69745f5f2e7079
*6f69010000002803000000730b0000005f5f696e69745f5f2e7079730c0000005f5f696e69745f
*5f2e707963730c0000005f5f696e69745f5f2e70796f280a000000740c00000064697374726962
*7574696f6e74120000006e616d6573706163655f7061636b6167657374150000006765745f6669
*6e616c697a65645f636f6d6d616e64742100000073696e676c655f76657273696f6e5f65787465
*726e616c6c795f6d616e61676564740500000073706c697474020000006f737404000000706174
*6874040000006a6f696e740b000000696e7374616c6c5f6469727403000000706f702807000000
*520700000074070000006578636c75646574030000006e73707403000000706b67740500000070
*617274737406000000706b67646972740100000066280000000028000000007337000000627569
*6c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c69
*6e7374616c6c5f6c69622e7079740e0000006765745f6578636c7573696f6e731a000000731c00
*0000000106010c021a03070006010f01030007011801070006011d011701690100000069000000
*00630700000009000000070000000300000073930000007c03006f0f00017c04006f0800017c05
*000c70070001740000820100017c0000690100830000890100880100701400017402006903007c
*00007c01007c020083030053016401006402006b04006c05007d0700016401006403006b06006c
*0700890200016700008900008702008700008701006603006404008600007d08007c07007c0100
*7c02007c0800830300018800005328050000004e69ffffffff28010000007410000000756e7061
*636b5f6469726563746f7279280100000074030000006c6f676302000000020000000500000013
*00000073520000007c01008802006a06006f1500018800006900006401007c0100830200017401
*0053018800006902006402007c00007403006904006905007c0100830100830300018801006906
*007c0100830100017c01005328030000004e732f000000536b697070696e6720696e7374616c6c
*6174696f6e206f6620257320286e616d657370616365207061636b616765297310000000636f70
*79696e67202573202d3e202573280700000074040000007761726e740500000046616c73657404
*000000696e666f5218000000521900000074070000006469726e616d6552050000002802000000
*74030000007372637403000000647374280300000052250000005210000000521d000000280000
*000073370000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c73
*5c636f6d6d616e645c696e7374616c6c5f6c69622e7079740200000070663b000000730c000000
*00010d01100105021f010d012808000000740e000000417373657274696f6e4572726f72522300
*0000740c0000005f696e7374616c6c5f6c69627409000000636f70795f74726565741700000073
*65747570746f6f6c732e617263686976655f7574696c5224000000740900000064697374757469
*6c735225000000280900000052070000007406000000696e66696c6574070000006f757466696c
*65740d00000070726573657276655f6d6f6465740e00000070726573657276655f74696d657374
*1100000070726573657276655f73796d6c696e6b7374050000006c6576656c5224000000522c00
*0000280000000028030000005210000000521d000000522500000073370000006275696c645c62
*646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c696e737461
*6c6c5f6c69622e7079522f0000002a000000731400000000041d010c0207011404100110020602
*15091001630100000005000000040000004300000073570000007400006901007c00008301007d
*01007c00006902008300007d02007c02006f310001670000047d03007c0100445d1e007d04007c
*04007c02006a07006f0b00017c03007c040012712d0001712d007e030053017c01005328010000
*004e2803000000522e000000740b0000006765745f6f7574707574735223000000280500000052
*0700000074070000006f757470757473521d00000074040000005f5b315d522200000028000000
*00280000000073370000006275696c645c62646973742e77696e33325c6567675c736574757074
*6f6f6c735c636f6d6d616e645c696e7374616c6c5f6c69622e7079523800000047000000730a00
*000000010f010c0107013101280800000074080000005f5f6e616d655f5f740a0000005f5f6d6f
*64756c655f5f74070000005f5f646f635f5f520b00000052110000005223000000522f00000052
*3800000028000000002800000000280000000073370000006275696c645c62646973742e77696e
*33325c6567675c7365747570746f6f6c735c636f6d6d616e645c696e7374616c6c5f6c69622e70
*79520000000004000000730c00000006010602090c09070912151b2804000000741d0000006469
*73747574696c732e636f6d6d616e642e696e7374616c6c5f6c69625200000000522e0000005218
*00000028000000002800000000280000000073370000006275696c645c62646973742e77696e33
*325c6567675c7365747570746f6f6c735c636f6d6d616e645c696e7374616c6c5f6c69622e7079
*74080000003c6d6f64756c653e01000000730400000010010c02
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/install_scripts.py
hunk ./setuptools-0.6c14devdev.egg/setuptools/command/install_scripts.py 1
+from distutils.command.install_scripts import install_scripts \
+     as _install_scripts
+from easy_install import get_script_args, sys_executable, chmod
+from pkg_resources import Distribution, PathMetadata, ensure_directory
+import os
+from distutils import log
+
+class install_scripts(_install_scripts):
+    """Do normal script install, plus any egg_info wrapper scripts"""
+
+    def initialize_options(self):
+        _install_scripts.initialize_options(self)
+        self.no_ep = False
+
+    def run(self):
+        self.run_command("egg_info")
+        if self.distribution.scripts:
+            _install_scripts.run(self)  # run first to set up self.outfiles
+        else:
+            self.outfiles = []
+        if self.no_ep:
+            # don't install entry point scripts into .egg file!
+            return
+
+        ei_cmd = self.get_finalized_command("egg_info")
+        dist = Distribution(
+            ei_cmd.egg_base, PathMetadata(ei_cmd.egg_base, ei_cmd.egg_info),
+            ei_cmd.egg_name, ei_cmd.egg_version,
+        )
+        bs_cmd = self.get_finalized_command('build_scripts')
+        executable = getattr(bs_cmd,'executable',sys_executable)
+        is_wininst = getattr(
+            self.get_finalized_command("bdist_wininst"), '_is_running', False
+        )
+        for args in get_script_args(dist, executable, is_wininst):
+            self.write_script(*args)
+
+
+
+
+
+    def write_script(self, script_name, contents, mode="t", *ignored):
+        """Write an executable file to the scripts directory"""
+        log.info("Installing %s script to %s", script_name, self.install_dir)
+        target = os.path.join(self.install_dir, script_name)
+        self.outfiles.append(target)
+
+        if not self.dry_run:
+            ensure_directory(target)
+            f = open(target,"w"+mode)
+            f.write(contents)
+            f.close()
+            chmod(target,0755)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/install_scripts.pyc
binary ./setuptools-0.6c14devdev.egg/setuptools/command/install_scripts.pyc
oldhex
*
newhex
*d1f20d0a441ef84b6300000000000000000800000040000000737e0000006400006401006b0000
*6c01005a0200016400006402006b03006c04005a04006c05005a05006c06005a06000164000064
*03006b07006c08005a08006c09005a09006c0a005a0a00016400006404006b0b005a0b00640000
*6405006b0c006c0d005a0d0001640600650200660100640700840000830000595a010064040053
*280800000069ffffffff2801000000740f000000696e7374616c6c5f7363726970747328030000
*00740f0000006765745f7363726970745f61726773740e0000007379735f65786563757461626c
*65740500000063686d6f642803000000740c000000446973747269627574696f6e740c00000050
*6174684d657461646174617410000000656e737572655f6469726563746f72794e280100000074
*030000006c6f6752000000006300000000000000000200000042000000732c0000006500005a01
*006400005a02006401008400005a03006402008400005a04006403006404008401005a05005253
*2805000000733b000000446f206e6f726d616c2073637269707420696e7374616c6c2c20706c75
*7320616e79206567675f696e666f20777261707065722073637269707473630100000001000000
*0200000043000000731a0000007400006901007c0000830100017402007c00005f030064000053
*28010000004e280400000074100000005f696e7374616c6c5f736372697074737412000000696e
*697469616c697a655f6f7074696f6e73740500000046616c736574050000006e6f5f6570280100
*0000740400000073656c6628000000002800000000734f000000433a5c7461686f652d6c616673
*5c7365747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c73
*5c636f6d6d616e645c696e7374616c6c5f736372697074732e707952090000000b000000730400
*000000010d01630100000007000000050000004300000073e90000007c00006900006401008301
*00017c00006901006902006f1100017403006904007c0000830100016e0a00016700007c00005f
*05007c00006906006f05000164000053017c00006907006401008301007d01007408007c010069
*0900740a007c01006909007c0100690b008302007c0100690c007c0100690d008304007d02007c
*00006907006402008301007d0300740e007c0300640300740f008303007d0400740e007c000069
*07006404008301006405007410008303007d05007827007411007c02007c04007c050083030044
*5d13007d06007c00006912007c06008c00000171ce00576400005328060000004e740800000065
*67675f696e666f740d0000006275696c645f73637269707473740a00000065786563757461626c
*65740d00000062646973745f77696e696e7374740b0000005f69735f72756e6e696e6728130000
*00740b00000072756e5f636f6d6d616e64740c000000646973747269627574696f6e7407000000
*736372697074735208000000740300000072756e74080000006f757466696c6573520b00000074
*150000006765745f66696e616c697a65645f636f6d6d616e64520400000074080000006567675f
*626173655205000000520d00000074080000006567675f6e616d65740b0000006567675f766572
*73696f6e7407000000676574617474725202000000520a0000005201000000740c000000777269
*74655f7363726970742807000000520c000000740600000065695f636d64740400000064697374
*740600000062735f636d64520f000000740a00000069735f77696e696e73747404000000617267
*7328000000002800000000734f000000433a5c7461686f652d6c6166735c7365747570746f6f6c
*732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c69
*6e7374616c6c5f736372697074732e707952150000000f000000732200000000010d010d011102
*09010a0205020f010301180112020f011201030118021300060174010000007463040000000700
*0000040000004700000073910000007400006901006401007c01007c0000690200830300017403
*006904006905007c00006902007c01008302007d05007c00006906006907007c0500830100017c
*0000690800704500017409007c050083010001740a007c05006402007c0300178302007d06007c
*0600690b007c0200830100017c0600690c0083000001740d007c0500640300830200016e010001
*6404005328050000007331000000577269746520616e2065786563757461626c652066696c6520
*746f207468652073637269707473206469726563746f7279731a000000496e7374616c6c696e67
*2025732073637269707420746f20257374010000007769ed0100004e280e000000520700000074
*04000000696e666f740b000000696e7374616c6c5f64697274020000006f737404000000706174
*6874040000006a6f696e52160000007406000000617070656e6474070000006472795f72756e52
*0600000074040000006f70656e740500000077726974657405000000636c6f7365520300000028
*07000000520c000000740b0000007363726970745f6e616d657408000000636f6e74656e747374
*040000006d6f6465740700000069676e6f72656474060000007461726765747401000000662800
*0000002800000000734f000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d30
*2e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c696e7374
*616c6c5f736372697074732e7079521c0000002a000000731200000000021601180110020a010a
*0113010d010a01280600000074080000005f5f6e616d655f5f740a0000005f5f6d6f64756c655f
*5f74070000005f5f646f635f5f52090000005215000000521c0000002800000000280000000028
*00000000734f000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331
*346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c696e7374616c6c5f
*736372697074732e70795200000000080000007308000000060106020904091b280e0000007421
*000000646973747574696c732e636f6d6d616e642e696e7374616c6c5f73637269707473520000
*00005208000000740c000000656173795f696e7374616c6c520100000052020000005203000000
*740d000000706b675f7265736f7572636573520400000052050000005206000000522600000074
*09000000646973747574696c735207000000280000000028000000002800000000734f00000043
*3a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567
*675c7365747570746f6f6c735c636f6d6d616e645c696e7374616c6c5f736372697074732e7079
*74080000003c6d6f64756c653e01000000730a00000010021c011c010c011002
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/register.py
hunk ./setuptools-0.6c14devdev.egg/setuptools/command/register.py 1
+from distutils.command.register import register as _register
+
+class register(_register):
+    __doc__ = _register.__doc__
+
+    def run(self):
+        # Make sure that we are using valid current name/version info
+        self.run_command('egg_info')
+        _register.run(self)
+
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/register.pyc
binary ./setuptools-0.6c14devdev.egg/setuptools/command/register.pyc
oldhex
*
newhex
*d1f20d0a451ef84b6300000000000000000400000040000000732a0000006400006401006b0000
*6c01005a020001640200650200660100640300840000830000595a010064040053280500000069
*ffffffff2801000000740800000072656769737465725200000000630000000000000000010000
*0042000000731a0000006500005a01006502006903005a03006400008400005a04005253280100
*00006301000000010000000200000043000000731e0000007c0000690000640100830100017401
*006902007c0000830100016400005328020000004e74080000006567675f696e666f2803000000
*740b00000072756e5f636f6d6d616e6474090000005f7265676973746572740300000072756e28
*01000000740400000073656c662800000000280000000073340000006275696c645c6264697374
*2e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c72656769737465722e
*7079520400000006000000730400000000020d01280500000074080000005f5f6e616d655f5f74
*0a0000005f5f6d6f64756c655f5f520300000074070000005f5f646f635f5f5204000000280000
*00002800000000280000000073340000006275696c645c62646973742e77696e33325c6567675c
*7365747570746f6f6c735c636f6d6d616e645c72656769737465722e7079520000000003000000
*7304000000060109024e2803000000741a000000646973747574696c732e636f6d6d616e642e72
*656769737465725200000000520300000028000000002800000000280000000073340000006275
*696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c
*72656769737465722e707974080000003c6d6f64756c653e0100000073020000001002
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/rotate.py
hunk ./setuptools-0.6c14devdev.egg/setuptools/command/rotate.py 1
+import distutils, os
+from setuptools import Command
+from distutils.util import convert_path
+from distutils import log
+from distutils.errors import *
+
+class rotate(Command):
+    """Delete older distributions"""
+
+    description = "delete older distributions, keeping N newest files"
+    user_options = [
+        ('match=',    'm', "patterns to match (required)"),
+        ('dist-dir=', 'd', "directory where the distributions are"),
+        ('keep=',     'k', "number of matching distributions to keep"),
+    ]
+
+    boolean_options = []
+
+    def initialize_options(self):
+        self.match = None
+        self.dist_dir = None
+        self.keep = None
+
+    def finalize_options(self):
+        if self.match is None:
+            raise DistutilsOptionError(
+                "Must specify one or more (comma-separated) match patterns "
+                "(e.g. '.zip' or '.egg')"
+            )
+        if self.keep is None:
+            raise DistutilsOptionError("Must specify number of files to keep")
+        try:
+            self.keep = int(self.keep)
+        except ValueError:
+            raise DistutilsOptionError("--keep must be an integer")
+        if isinstance(self.match, basestring):
+            self.match = [
+                convert_path(p.strip()) for p in self.match.split(',')
+            ]
+        self.set_undefined_options('bdist',('dist_dir', 'dist_dir'))
+
+    def run(self):
+        self.run_command("egg_info")
+        from glob import glob
+        for pattern in self.match:
+            pattern = self.distribution.get_name()+'*'+pattern
+            files = glob(os.path.join(self.dist_dir,pattern))
+            files = [(os.path.getmtime(f),f) for f in files]
+            files.sort()
+            files.reverse()
+
+            log.info("%d file(s) matching %s", len(files), pattern)
+            files = files[self.keep:]
+            for (t,f) in files:
+                log.info("Deleting %s", f)
+                if not self.dry_run:
+                    os.unlink(f)
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/rotate.pyc
binary ./setuptools-0.6c14devdev.egg/setuptools/command/rotate.pyc
oldhex
*
newhex
*d1f20d0a461ef84b6300000000000000000900000040000000736c0000006400006401006b0000
*5a00006400006401006b01005a01006400006402006b02006c03005a0300016400006403006b04
*006c05005a0500016400006404006b00006c06005a0600016400006405006b0700546406006503
*00660100640700840000830000595a080064010053280800000069ffffffff4e28010000007407
*000000436f6d6d616e642801000000740c000000636f6e766572745f7061746828010000007403
*0000006c6f67280100000074010000002a7406000000726f746174656300000000000000000500
*00004200000073440000006500005a01006400005a02006401005a0300640e00640f0064100067
*03005a04006700005a0500640b008400005a0600640c008400005a0700640d008400005a080052
*532811000000731a00000044656c657465206f6c64657220646973747269627574696f6e737332
*00000064656c657465206f6c64657220646973747269627574696f6e732c206b656570696e6720
*4e206e65776573742066696c657373060000006d617463683d74010000006d731c000000706174
*7465726e7320746f206d6174636820287265717569726564297309000000646973742d6469723d
*74010000006473250000006469726563746f727920776865726520746865206469737472696275
*74696f6e732061726573050000006b6565703d74010000006b73280000006e756d626572206f66
*206d61746368696e6720646973747269627574696f6e7320746f206b6565706301000000010000
*000200000043000000731f0000006400007c00005f01006400007c00005f02006400007c00005f
*03006400005328010000004e280400000074040000004e6f6e6574050000006d61746368740800
*0000646973745f64697274040000006b6565702801000000740400000073656c66280000000028
*0000000073320000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f
*6c735c636f6d6d616e645c726f746174652e70797412000000696e697469616c697a655f6f7074
*696f6e73130000007306000000000109010901630100000003000000090000004300000073df00
*00007c00006900006400006a08006f1000017402006401008301008201006e0100017c00006903
*006400006a08006f1000017402006402008301008201006e0100017916007404007c0000690300
*8301007c00005f0300576e1f00047405006a0a006f130001010101740200640300830100820100
*6e020001587406007c00006900007407008302006f400001670000047d01007c00006900006908
*00640400830100445d19007d02007c01007409007c0200690a008300008301001271a2007e0100
*7c00005f00006e0100017c0000690b00640500640700830200016400005328080000004e735100
*00004d7573742073706563696679206f6e65206f72206d6f72652028636f6d6d612d7365706172
*6174656429206d61746368207061747465726e732028652e672e20272e7a697027206f7220272e
*656767272973240000004d7573742073706563696679206e756d626572206f662066696c657320
*746f206b65657073190000002d2d6b656570206d75737420626520616e20696e74656765727401
*0000002c74050000006264697374520a00000028020000007308000000646973745f6469727308
*000000646973745f646972280c000000520900000052080000007414000000446973747574696c
*734f7074696f6e4572726f72520b0000007403000000696e74740a00000056616c75654572726f
*72740a0000006973696e7374616e6365740a00000062617365737472696e67740500000073706c
*697452010000007405000000737472697074150000007365745f756e646566696e65645f6f7074
*696f6e732803000000520c00000074040000005f5b315d74010000007028000000002800000000
*73320000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c63
*6f6d6d616e645c726f746174652e7079741000000066696e616c697a655f6f7074696f6e731800
*000073180000000001100103010d0310011001030116010e011101130240026301000000070000
*00090000004300000073190100007c0000690000640100830100016402006403006b01006c0100
*7d01000178f5007c0000690200445dea007d02007c0000690300690400830000640400177c0200
*177d02007c01007405006906006907007c00006908007c02008302008301007d0300670000047d
*04007c0300445d1f007d05007c04007405006906006909007c05008301007c050066020012716d
*007e04007d03007c0300690a00830000017c0300690b0083000001740c00690d00640500740e00
*7c03008301007c0200830300017c03007c0000690f001f7d0300783f007c0300445d37005c0200
*7d06007d0500740c00690d006406007c0500830200017c0000691000701100017405006911007c
*05008301000171d6000171d60057712700576400005328070000004e74080000006567675f696e
*666f69ffffffff28010000007404000000676c6f625203000000731600000025642066696c6528
*7329206d61746368696e67202573730b00000044656c6574696e672025732812000000740b0000
*0072756e5f636f6d6d616e64521c0000005209000000740c000000646973747269627574696f6e
*74080000006765745f6e616d6574020000006f7374040000007061746874040000006a6f696e52
*0a00000074080000006765746d74696d657404000000736f727474070000007265766572736552
*020000007404000000696e666f74030000006c656e520b00000074070000006472795f72756e74
*06000000756e6c696e6b2807000000520c000000521c00000074070000007061747465726e7405
*00000066696c657352180000007401000000667401000000742800000000280000000073320000
*006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d61
*6e645c726f746174652e7079740300000072756e2a000000732000000000010d0110010a000601
*17011e0133010a010a0219010d0107000c0110010a01280300000073060000006d617463683d52
*05000000731c0000007061747465726e7320746f206d6174636820287265717569726564292803
*0000007309000000646973742d6469723d520600000073250000006469726563746f7279207768
*6572652074686520646973747269627574696f6e7320617265280300000073050000006b656570
*3d520700000073280000006e756d626572206f66206d61746368696e6720646973747269627574
*696f6e7320746f206b656570280900000074080000005f5f6e616d655f5f740a0000005f5f6d6f
*64756c655f5f74070000005f5f646f635f5f740b0000006465736372697074696f6e740c000000
*757365725f6f7074696f6e73740f000000626f6f6c65616e5f6f7074696f6e73520d000000521a
*000000522e00000028000000002800000000280000000073320000006275696c645c6264697374
*2e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c726f746174652e7079
*520400000007000000731200000006010602060203010301090306020905091228090000007409
*000000646973747574696c735220000000740a0000007365747570746f6f6c735200000000740e
*000000646973747574696c732e7574696c52010000005202000000741000000064697374757469
*6c732e6572726f7273520400000028000000002800000000280000000073320000006275696c64
*5c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c726f74
*6174652e707974080000003c6d6f64756c653e01000000730a00000018011001100110010a02
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/saveopts.py
hunk ./setuptools-0.6c14devdev.egg/setuptools/command/saveopts.py 1
+import distutils, os
+from setuptools import Command
+from setuptools.command.setopt import edit_config, option_base
+
+class saveopts(option_base):
+    """Save command-line options to a file"""
+
+    description = "save supplied options to setup.cfg or other config file"
+
+    def run(self):
+        dist = self.distribution
+        commands = dist.command_options.keys()
+        settings = {}
+
+        for cmd in commands:
+
+            if cmd=='saveopts':
+                continue    # don't save our own options!
+
+            for opt,(src,val) in dist.get_option_dict(cmd).items():
+                if src=="command line":
+                    settings.setdefault(cmd,{})[opt] = val
+
+        edit_config(self.filename, settings, self.dry_run)
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/saveopts.pyc
binary ./setuptools-0.6c14devdev.egg/setuptools/command/saveopts.pyc
oldhex
*
newhex
*d1f20d0a461ef84b630000000000000000070000004000000073580000006400006401006b0000
*5a00006400006401006b01005a01006400006402006b02006c03005a0300016400006403006b04
*006c05005a05006c06005a060001640400650600660100640500840000830000595a0700640100
*53280600000069ffffffff4e28010000007407000000436f6d6d616e642802000000740b000000
*656469745f636f6e666967740b0000006f7074696f6e5f626173657408000000736176656f7074
*736300000000000000000100000042000000731d0000006500005a01006400005a02006401005a
*03006402008400005a04005253280300000073230000005361766520636f6d6d616e642d6c696e
*65206f7074696f6e7320746f20612066696c6573370000007361766520737570706c696564206f
*7074696f6e7320746f2073657475702e636667206f72206f7468657220636f6e6669672066696c
*65630100000008000000060000004300000073b00000007c00006900007d01007c010069010069
*02008300007d02006800007d03007875007c0200445d6d007d04007c04006401006a02006f0700
*017125006e0100017850007c01006903007c0400830100690400830000445d39005c02007d0500
*5c02007d06007d07007c06006402006a02006f1a00017c07007c03006905007c04006800008302
*007c05003c7155000171550057712500577406007c00006907007c03007c000069080083030001
*6400005328030000004e5203000000730c000000636f6d6d616e64206c696e652809000000740c
*000000646973747269627574696f6e740f000000636f6d6d616e645f6f7074696f6e7374040000
*006b657973740f0000006765745f6f7074696f6e5f6469637474050000006974656d73740a0000
*0073657464656661756c745201000000740800000066696c656e616d6574070000006472795f72
*756e2808000000740400000073656c667404000000646973747408000000636f6d6d616e647374
*0800000073657474696e67737403000000636d6474030000006f70747403000000737263740300
*000076616c2800000000280000000073340000006275696c645c62646973742e77696e33325c65
*67675c7365747570746f6f6c735c636f6d6d616e645c736176656f7074732e7079740300000072
*756e0a0000007318000000000109010f010602070006020d010702160012010d01220228050000
*0074080000005f5f6e616d655f5f740a0000005f5f6d6f64756c655f5f74070000005f5f646f63
*5f5f740b0000006465736372697074696f6e521400000028000000002800000000280000000073
*340000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f
*6d6d616e645c736176656f7074732e707952030000000500000073060000000601060206022808
*0000007409000000646973747574696c7374020000006f73740a0000007365747570746f6f6c73
*520000000074190000007365747570746f6f6c732e636f6d6d616e642e7365746f707452010000
*005202000000520300000028000000002800000000280000000073340000006275696c645c6264
*6973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c736176656f70
*74732e707974080000003c6d6f64756c653e010000007306000000180110011602
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/sdist.py
hunk ./setuptools-0.6c14devdev.egg/setuptools/command/sdist.py 1
+from distutils.command.sdist import sdist as _sdist
+from distutils.util import convert_path
+from distutils import log
+import os, re, sys, pkg_resources
+
+entities = [
+    ("&lt;","<"), ("&gt;", ">"), ("&quot;", '"'), ("&apos;", "'"),
+    ("&amp;", "&")
+]
+
+def unescape(data):
+    for old,new in entities:
+        data = data.replace(old,new)
+    return data
+
+def re_finder(pattern, postproc=None):
+    def find(dirname, filename):
+        f = open(filename,'rU')
+        data = f.read()
+        f.close()
+        for match in pattern.finditer(data):
+            path = match.group(1)
+            if postproc:
+                path = postproc(path)
+            yield joinpath(dirname,path)
+    return find
+
+def joinpath(prefix,suffix):
+    if not prefix:
+        return suffix
+    return os.path.join(prefix,suffix)
+
+
+
+
+
+
+
+
+
+
+def walk_revctrl(dirname=''):
+    """Find all files under revision control"""
+    for ep in pkg_resources.iter_entry_points('setuptools.file_finders'):
+        for item in ep.load()(dirname):
+            yield item
+
+def _default_revctrl(dirname=''):
+    for path, finder in finders:
+        path = joinpath(dirname,path)
+        if os.path.isfile(path):
+            for path in finder(dirname,path):
+                if os.path.isfile(path):
+                    yield path
+                elif os.path.isdir(path):
+                    for item in _default_revctrl(path):
+                        yield item
+
+def externals_finder(dirname, filename):
+    """Find any 'svn:externals' directories"""
+    found = False
+    f = open(filename,'rb')
+    for line in iter(f.readline, ''):    # can't use direct iter!
+        parts = line.split()
+        if len(parts)==2:
+            kind,length = parts
+            data = f.read(int(length))
+            if kind=='K' and data=='svn:externals':
+                found = True
+            elif kind=='V' and found:
+                f.close()
+                break
+    else:
+        f.close()
+        return
+
+    for line in data.splitlines():
+        parts = line.split()
+        if parts:
+            yield joinpath(dirname, parts[0])
+
+
+entries_pattern = re.compile(r'name="([^"]+)"(?![^>]+deleted="true")', re.I)
+
+def entries_finder(dirname, filename):
+    f = open(filename,'rU')
+    data = f.read()
+    f.close()
+    if data.startswith('9') or data.startswith('8'):    # subversion 1.5/1.4
+        for record in map(str.splitlines, data.split('\n\x0c\n')[1:]):
+            if not record or len(record)>=6 and record[5]=="delete":
+                continue    # skip deleted
+            yield joinpath(dirname, record[0])
+    elif data.startswith('<?xml'):
+        for match in entries_pattern.finditer(data):
+            yield joinpath(dirname,unescape(match.group(1)))
+    else:
+        log.warn("unrecognized .svn/entries format in %s", dirname)
+
+
+finders = [
+    (convert_path('CVS/Entries'),
+        re_finder(re.compile(r"^\w?/([^/]+)/", re.M))),
+    (convert_path('.svn/entries'), entries_finder),
+    (convert_path('.svn/dir-props'), externals_finder),
+    (convert_path('.svn/dir-prop-base'), externals_finder),  # svn 1.4
+]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+class sdist(_sdist):
+    """Smart sdist that finds anything supported by revision control"""
+
+    user_options = [
+        ('formats=', None,
+         "formats for source distribution (comma-separated list)"),
+        ('keep-temp', 'k',
+         "keep the distribution tree around after creating " +
+         "archive file(s)"),
+        ('dist-dir=', 'd',
+         "directory to put the source distribution archive(s) in "
+         "[default: dist]"),
+        ]
+
+    negative_opt = {}
+
+    def run(self):
+        self.run_command('egg_info')
+        ei_cmd = self.get_finalized_command('egg_info')
+        self.filelist = ei_cmd.filelist
+        self.filelist.append(os.path.join(ei_cmd.egg_info,'SOURCES.txt'))
+        self.check_readme()
+        self.check_metadata()
+        self.make_distribution()
+
+        dist_files = getattr(self.distribution,'dist_files',[])
+        for file in self.archive_files:
+            data = ('sdist', '', file)
+            if data not in dist_files:
+                dist_files.append(data)
+
+    def read_template(self):
+        try:
+            _sdist.read_template(self)
+        except:
+            # grody hack to close the template file (MANIFEST.in)
+            # this prevents easy_install's attempt at deleting the file from
+            # dying and thus masking the real error
+            sys.exc_info()[2].tb_next.tb_frame.f_locals['template'].close()
+            raise
+
+    def check_readme(self):
+        alts = ("README", "README.txt")
+        for f in alts:
+            if os.path.exists(f):
+                return
+        else:
+            self.warn(
+                "standard file not found: should have one of " +', '.join(alts)
+            )
+
+
+    def make_release_tree(self, base_dir, files):
+        _sdist.make_release_tree(self, base_dir, files)
+
+        # Save any egg_info command line options used to create this sdist
+        dest = os.path.join(base_dir, 'setup.cfg')
+        if hasattr(os,'link') and os.path.exists(dest):
+            # unlink and re-copy, since it might be hard-linked, and
+            # we don't want to change the source version
+            os.unlink(dest)
+            self.copy_file('setup.cfg', dest)
+
+        self.get_finalized_command('egg_info').save_version_info(dest)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/sdist.pyc
binary ./setuptools-0.6c14devdev.egg/setuptools/command/sdist.pyc
oldhex
*
newhex
*d1f20d0a461ef84b6300000000000000000d0000004000000073430100006400006401006b0000
*6c01005a0200016400006402006b03006c04005a0400016400006403006b05006c06005a060001
*6400006404006b07005a07006400006404006b08005a08006400006404006b09005a0900640000
*6404006b0a005a0a00641f006420006421006422006423006705005a0b00640f008400005a0c00
*6404006410008401005a0e006411008400005a0f006412006413008401005a1000641200641400
*8401005a11006415008400005a12006508006913006416006508006914008302005a1500641700
*8400005a1600650400641800830100650e00650800691300641900650800691700830200830100
*660200650400641a00830100651600660200650400641b00830100651200660200650400641c00
*8301006512006602006704005a1800641d00650200660100641e00840000830000595a01006404
*0053282400000069ffffffff2801000000740500000073646973742801000000740c000000636f
*6e766572745f70617468280100000074030000006c6f674e7304000000266c743b74010000003c
*73040000002667743b74010000003e73060000002671756f743b74010000002273060000002661
*706f733b740100000027730500000026616d703b74010000002663010000000300000004000000
*43000000732d000000782600740000445d1e005c02007d01007d02007c00006901007c01007c02
*008302007d0000710700577c00005328010000004e28020000007408000000656e746974696573
*74070000007265706c616365280300000074040000006461746174030000006f6c647403000000
*6e6577280000000028000000007345000000433a5c7461686f652d6c6166735c7365747570746f
*6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e64
*5c73646973742e70797408000000756e6573636170650b0000007308000000000107000c011601
*630200000003000000020000000300000073160000008701008700006602006401008600007d02
*007c02005328020000004e630200000006000000040000003300000073770000007400007c0100
*6401008302007d02007c02006901008300007d03007c020069020083000001784b008801006903
*007c0300830100445d3a007d04007c04006904006402008301007d05008800006f100001880000
*7c05008301007d05006e0100017405007c00007c05008302005601713500576400005328030000
*004e740200000072556901000000280600000074040000006f70656e7404000000726561647405
*000000636c6f7365740800000066696e6469746572740500000067726f757074080000006a6f69
*6e70617468280600000074070000006469726e616d65740800000066696c656e616d6574010000
*0066520a00000074050000006d6174636874040000007061746828020000007408000000706f73
*7470726f6374070000007061747465726e28000000007345000000433a5c7461686f652d6c6166
*735c7365747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c
*735c636f6d6d616e645c73646973742e7079740400000066696e6411000000731200000000010f
*010c010a01100006010f010701100128000000002803000000521b000000521a000000521c0000
*0028000000002802000000521b000000521a0000007345000000433a5c7461686f652d6c616673
*5c7365747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c73
*5c636f6d6d616e645c73646973742e7079740900000072655f66696e6465721000000073040000
*00000112096302000000020000000300000043000000731f0000007c0000700500017c01005301
*7400006901006902007c00007c01008302005328010000004e280300000074020000006f735219
*00000074040000006a6f696e280200000074060000007072656669787406000000737566666978
*280000000028000000007345000000433a5c7461686f652d6c6166735c7365747570746f6f6c73
*2d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c7364
*6973742e707952140000001c000000730600000000010701050174000000006301000000030000
*0003000000630000007340000000783900740000690100640100830100445d28007d0100781f00
*7c01006902008300007c0000830100445d0b007d02007c02005601712900577110005764020053
*2803000000732500000046696e6420616c6c2066696c657320756e646572207265766973696f6e
*20636f6e74726f6c73170000007365747570746f6f6c732e66696c655f66696e646572734e2803
*000000740d000000706b675f7265736f75726365737411000000697465725f656e7472795f706f
*696e747374040000006c6f6164280300000052150000007402000000657074040000006974656d
*280000000028000000007345000000433a5c7461686f652d6c6166735c7365747570746f6f6c73
*2d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c7364
*6973742e7079740c00000077616c6b5f7265766374726c2a000000730a00000000021000060113
*000601630100000004000000040000006300000073aa00000078a300740000445d9b005c02007d
*01007d02007401007c00007c01008302007d01007402006903006904007c01008301006f6d0001
*786a007c02007c00007c0100830200445d55007d01007402006903006904007c01008301006f09
*00017c01005601714500017402006903006905007c01008301006f200001781d007406007c0100
*830100445d0b007d03007c03005601718700577145000171450057710700017107005764000053
*28010000004e2807000000740700000066696e646572735214000000521e000000521900000074
*06000000697366696c657405000000697364697274100000005f64656661756c745f7265766374
*726c280400000052150000005219000000740600000066696e6465725227000000280000000028
*000000007345000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331
*346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c73646973742e7079
*522c000000300000007318000000000107000c010f011301100006011301090113010d00060163
*02000000090000000700000063000000730f0100007400007d02007401007c0100640100830200
*7d030078b3007402007c0300690300640200830200445d91007d04007c04006904008300007d05
*007405007c05008301006403006a02006f6c00017c05005c02007d06007d07007c030069060074
*07007c07008301008301007d08007c06006404006a02006f1700017c08006405006a02006f0a00
*017408007d020071b900017c06006406006a02006f1600017c02006f0f00017c03006909008300
*00015071b9000171280001712800577c03006909008300000164070053783d007c0800690a0083
*0000445d2f007d04007c04006904008300007d05007c05006f160001740b007c00007c05006408
*0019830200560171d8000171d80057640700532809000000732400000046696e6420616e792027
*73766e3a65787465726e616c7327206469726563746f7269657374020000007262522200000069
*0200000074010000004b730d00000073766e3a65787465726e616c737401000000564e69000000
*00280c000000740500000046616c7365520f000000740400000069746572740800000072656164
*6c696e65740500000073706c697474030000006c656e52100000007403000000696e7474040000
*00547275655211000000740a00000073706c69746c696e65735214000000280900000052150000
*0052160000007405000000666f756e64521700000074040000006c696e65740500000070617274
*7374040000006b696e6474060000006c656e677468520a00000028000000002800000000734500
*0000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36633134646576646576
*2e6567675c7365747570746f6f6c735c636f6d6d616e645c73646973742e707974100000006578
*7465726e616c735f66696e6465723b0000007328000000000206010f01130006010c0113010c01
*15011a010a0114010a010d020a0104020d0006010c01070173250000006e616d653d22285b5e22
*5d2b2922283f215b5e3e5d2b64656c657465643d22747275652229630200000006000000060000
*006300000073170100007400007c01006401008302007d02007c02006901008300007d03007c02
*00690200830000017c0300690300640200830100701000017c03006903006403008301006f7300
*0178cb007404007405006906007c03006907006404008301006405001f830200445d4b007d0400
*7c04000c702400017408007c04008301006406006a05006f1800017c0400640700196408006a02
*006f0700017165006e0100017409007c00007c0400640900198302005601716500576e5c00017c
*0300690300640a008301006f3b0001784800740a00690b007c0300830100445d23007d05007409
*007c0000740c007c0500690d00640500830100830100830200560171d800576e110001740e0069
*0f00640b007c00008302000164000053280c0000004e520e000000740100000039740100000038
*73030000000a0c0a690100000069060000006905000000740600000064656c6574656900000000
*73050000003c3f786d6c7326000000756e7265636f676e697a6564202e73766e2f656e74726965
*7320666f726d617420696e2025732810000000520f00000052100000005211000000740a000000
*7374617274737769746874030000006d6170740300000073747252380000005234000000523500
*00005214000000740f000000656e74726965735f7061747465726e5212000000520d0000005213
*000000520200000074040000007761726e2806000000521500000052160000005217000000520a
*00000074060000007265636f72645218000000280000000028000000007345000000433a5c7461
*686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c7365
*747570746f6f6c735c636f6d6d616e645c73646973742e7079740e000000656e74726965735f66
*696e64657255000000731c00000000010f010c010a012001200006012c0107011a011001100006
*012502730b0000004356532f456e7472696573730d0000005e5c773f2f285b5e2f5d2b292f730c
*0000002e73766e2f656e7472696573730e0000002e73766e2f6469722d70726f70737312000000
*2e73766e2f6469722d70726f702d62617365520000000063000000000000000005000000420000
*0073540000006500005a01006400005a0200640f00640300640400640500640600176603006410
*006703005a04006800005a0500640a008400005a0600640b008400005a0700640c008400005a08
*00640d008400005a090052532811000000733d000000536d617274207364697374207468617420
*66696e647320616e797468696e6720737570706f72746564206279207265766973696f6e20636f
*6e74726f6c7308000000666f726d6174733d7336000000666f726d61747320666f7220736f7572
*636520646973747269627574696f6e2028636f6d6d612d736570617261746564206c6973742973
*090000006b6565702d74656d7074010000006b73310000006b6565702074686520646973747269
*627574696f6e20747265652061726f756e64206166746572206372656174696e6720730f000000
*617263686976652066696c652873297309000000646973742d6469723d74010000006473460000
*006469726563746f727920746f207075742074686520736f757263652064697374726962757469
*6f6e206172636869766528732920696e205b64656661756c743a20646973745d63010000000500
*0000040000004300000073c20000007c0000690000640100830100017c00006901006401008301
*007d01007c01006902007c00005f02007c00006902006903007404006905006906007c01006907
*00640200830200830100017c0000690800830000017c0000690900830000017c0000690a008300
*0001740b007c0000690c006403006700008303007d0200783e007c0000690d00445d33007d0300
*6404006405007c03006603007d04007c04007c02006a07006f1100017c02006903007c04008301
*000171870001718700576400005328060000004e74080000006567675f696e666f730b00000053
*4f55524345532e747874740a000000646973745f66696c657352000000005222000000280e0000
*00740b00000072756e5f636f6d6d616e6474150000006765745f66696e616c697a65645f636f6d
*6d616e64740800000066696c656c6973747406000000617070656e64521e000000521900000052
*1f000000524b000000740c000000636865636b5f726561646d65740e000000636865636b5f6d65
*74616461746174110000006d616b655f646973747269627574696f6e7407000000676574617474
*72740c000000646973747269627574696f6e740d000000617263686976655f66696c6573280500
*0000740400000073656c66740600000065695f636d64524c000000740400000066696c65520a00
*0000280000000028000000007345000000433a5c7461686f652d6c6166735c7365747570746f6f
*6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c
*73646973742e7079740300000072756e8c000000731a00000000010d010f010c0122010a010a01
*0a0215010a0006010f010d01630100000001000000050000004300000073430000007911007400
*006901007c000083010001576e2b00010101740200690300830000640100196904006905006906
*0064020019690700830000018200006e0100586400005328030000004e69020000007408000000
*74656d706c617465280800000074060000005f7364697374740d000000726561645f74656d706c
*617465740300000073797374080000006578635f696e666f740700000074625f6e657874740800
*000074625f6672616d657408000000665f6c6f63616c7352110000002801000000525700000028
*0000000028000000007345000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d
*302e366331346465766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c736469
*73742e7079525d0000009b000000730a0000000001030111010304210163010000000300000006
*00000043000000734d0000006405007d01007840007c0100445d1e007d02007400006901006902
*007c02008301006f0500016400005301710d00577c00006903006403006404006904007c010083
*010017830100016400005328060000004e7406000000524541444d45730a000000524541444d45
*2e747874732c0000007374616e646172642066696c65206e6f7420666f756e643a2073686f756c
*642068617665206f6e65206f662073020000002c2028020000005263000000730a000000524541
*444d452e7478742805000000521e00000052190000007406000000657869737473524600000052
*1f000000280300000052570000007404000000616c747352170000002800000000280000000073
*45000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663313464657664
*65762e6567675c7365747570746f6f6c735c636f6d6d616e645c73646973742e70795251000000
*a5000000730e000000000106010700060113010902060163030000000400000004000000430000
*0073860000007400006901007c00007c01007c0200830300017402006903006904007c01006401
*008302007d03007405007402006402008302006f3400017402006903006906007c03008301006f
*2100017402006907007c0300830100017c00006908006401007c0300830200016e0100017c0000
*690900640300830100690a007c0300830100016400005328040000004e73090000007365747570
*2e63666774040000006c696e6b524b000000280b000000525c00000074110000006d616b655f72
*656c656173655f74726565521e0000005219000000521f00000074070000006861736174747252
*640000007406000000756e6c696e6b7409000000636f70795f66696c65524e0000007411000000
*736176655f76657273696f6e5f696e666f280400000052570000007408000000626173655f6469
*72740500000066696c6573740400000064657374280000000028000000007345000000433a5c74
*61686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c73
*65747570746f6f6c735c636f6d6d616e645c73646973742e70795267000000b0000000730c0000
*0000011303150123030d0114024e28030000007308000000666f726d6174733d4e733600000066
*6f726d61747320666f7220736f7572636520646973747269627574696f6e2028636f6d6d612d73
*6570617261746564206c6973742928030000007309000000646973742d6469723d524a00000073
*460000006469726563746f727920746f207075742074686520736f757263652064697374726962
*7574696f6e206172636869766528732920696e205b64656661756c743a20646973745d280a0000
*0074080000005f5f6e616d655f5f740a0000005f5f6d6f64756c655f5f74070000005f5f646f63
*5f5f74040000004e6f6e65740c000000757365725f6f7074696f6e73740c0000006e6567617469
*76655f6f7074525a000000525d0000005251000000526700000028000000002800000000280000
*00007345000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663313464
*65766465762e6567675c7365747570746f6f6c735c636f6d6d616e645c73646973742e70795200
*0000007c000000731a0000000601060300010301060103010701000109040602090f090a090b28
*020000007304000000266c743b5203000000280200000073040000002667743b52040000002802
*00000073060000002671756f743b5205000000280200000073060000002661706f733b52060000
*002802000000730500000026616d703b520700000028190000007417000000646973747574696c
*732e636f6d6d616e642e73646973745200000000525c000000740e000000646973747574696c73
*2e7574696c52010000007409000000646973747574696c735202000000521e0000007402000000
*7265525e00000052230000005208000000520d0000005272000000521d00000052140000005228
*000000522c000000523e0000007407000000636f6d70696c657401000000495245000000524800
*000074010000004d52290000002800000000280000000028000000007345000000433a5c746168
*6f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c736574
*7570746f6f6c735c636f6d6d616e645c73646973742e707974080000003c6d6f64756c653e0100
*0000732600000010011001100130030c01090309050c0c090e0c060c0b09181502091109011b01
*0f010f011512
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/setopt.py
hunk ./setuptools-0.6c14devdev.egg/setuptools/command/setopt.py 1
+import distutils, os
+from setuptools import Command
+from distutils.util import convert_path
+from distutils import log
+from distutils.errors import *
+
+__all__ = ['config_file', 'edit_config', 'option_base', 'setopt']
+
+
+def config_file(kind="local"):
+    """Get the filename of the distutils, local, global, or per-user config
+
+    `kind` must be one of "local", "global", or "user"
+    """
+    if kind=='local':
+        return 'setup.cfg'
+    if kind=='global':
+        return os.path.join(
+            os.path.dirname(distutils.__file__),'distutils.cfg'
+        )
+    if kind=='user':
+        dot = os.name=='posix' and '.' or ''
+        return os.path.expanduser(convert_path("~/%spydistutils.cfg" % dot))
+    raise ValueError(
+        "config_file() type must be 'local', 'global', or 'user'", kind
+    )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+def edit_config(filename, settings, dry_run=False):
+    """Edit a configuration file to include `settings`
+
+    `settings` is a dictionary of dictionaries or ``None`` values, keyed by
+    command/section name.  A ``None`` value means to delete the entire section,
+    while a dictionary lists settings to be changed or deleted in that section.
+    A setting of ``None`` means to delete that setting.
+    """
+    from ConfigParser import RawConfigParser
+    log.debug("Reading configuration from %s", filename)
+    opts = RawConfigParser()
+    opts.read([filename])
+    for section, options in settings.items():
+        if options is None:
+            log.info("Deleting section [%s] from %s", section, filename)
+            opts.remove_section(section)
+        else:
+            if not opts.has_section(section):
+                log.debug("Adding new section [%s] to %s", section, filename)
+                opts.add_section(section)
+            for option,value in options.items():
+                if value is None:
+                    log.debug("Deleting %s.%s from %s",
+                        section, option, filename
+                    )
+                    opts.remove_option(section,option)
+                    if not opts.options(section):
+                        log.info("Deleting empty [%s] section from %s",
+                                  section, filename)
+                        opts.remove_section(section)
+                else:
+                    log.debug(
+                        "Setting %s.%s to %r in %s",
+                        section, option, value, filename
+                    )
+                    opts.set(section,option,value)
+
+    log.info("Writing %s", filename)
+    if not dry_run:
+        f = open(filename,'w'); opts.write(f); f.close()
+
+class option_base(Command):
+    """Abstract base class for commands that mess with config files"""
+
+    user_options = [
+        ('global-config', 'g',
+                 "save options to the site-wide distutils.cfg file"),
+        ('user-config', 'u',
+                 "save options to the current user's pydistutils.cfg file"),
+        ('filename=', 'f',
+                 "configuration file to use (default=setup.cfg)"),
+    ]
+
+    boolean_options = [
+        'global-config', 'user-config',
+    ]
+
+    def initialize_options(self):
+        self.global_config = None
+        self.user_config   = None
+        self.filename = None
+
+    def finalize_options(self):
+        filenames = []
+        if self.global_config:
+            filenames.append(config_file('global'))
+        if self.user_config:
+            filenames.append(config_file('user'))
+        if self.filename is not None:
+            filenames.append(self.filename)
+        if not filenames:
+            filenames.append(config_file('local'))
+        if len(filenames)>1:
+            raise DistutilsOptionError(
+                "Must specify only one configuration file option",
+                filenames
+            )
+        self.filename, = filenames
+
+
+
+
+class setopt(option_base):
+    """Save command-line options to a file"""
+
+    description = "set an option in setup.cfg or another config file"
+
+    user_options = [
+        ('command=', 'c', 'command to set an option for'),
+        ('option=',  'o',  'option to set'),
+        ('set-value=',   's', 'value of the option'),
+        ('remove',   'r', 'remove (unset) the value'),
+    ] + option_base.user_options
+
+    boolean_options = option_base.boolean_options + ['remove']
+
+    def initialize_options(self):
+        option_base.initialize_options(self)
+        self.command = None
+        self.option = None
+        self.set_value = None
+        self.remove = None
+
+    def finalize_options(self):
+        option_base.finalize_options(self)
+        if self.command is None or self.option is None:
+            raise DistutilsOptionError("Must specify --command *and* --option")
+        if self.set_value is None and not self.remove:
+            raise DistutilsOptionError("Must specify --set-value or --remove")
+
+    def run(self):
+        edit_config(
+            self.filename, {
+                self.command: {self.option.replace('-','_'):self.set_value}
+            },
+            self.dry_run
+        )
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/setopt.pyc
binary ./setuptools-0.6c14devdev.egg/setuptools/command/setopt.pyc
oldhex
*
newhex
*d1f20d0a471ef84b6300000000000000000a0000004000000073ac0000006400006401006b0000
*5a00006400006401006b01005a01006400006402006b02006c03005a0300016400006403006b04
*006c05005a0500016400006404006b00006c06005a0600016400006405006b0700546406006407
*006408006409006704005a0800640a00640b008401005a0900650a00640c008401005a0b006408
*00650300660100640d00840000830000595a0c00640900650c00660100640e0084000083000059
*5a0d0064010053280f00000069ffffffff4e28010000007407000000436f6d6d616e6428010000
*00740c000000636f6e766572745f70617468280100000074030000006c6f672801000000740100
*00002a740b000000636f6e6669675f66696c65740b000000656469745f636f6e666967740b0000
*006f7074696f6e5f6261736574060000007365746f707474050000006c6f63616c630100000002
*0000000400000043000000739a0000007c00006401006a02006f05000164020053017c00006403
*006a02006f23000174000069010069020074000069010069030074040069050083010064040083
*020053017c00006405006a02006f3800017400006906006406006a02006f070001640700700400
*016408007d01007400006901006907007408006409007c0100168301008301005301740900640a
*007c0000830200820100640b0053280c0000007381000000476574207468652066696c656e616d
*65206f662074686520646973747574696c732c206c6f63616c2c20676c6f62616c2c206f722070
*65722d7573657220636f6e6669670a0a20202020606b696e6460206d757374206265206f6e6520
*6f6620226c6f63616c222c2022676c6f62616c222c206f72202275736572220a20202020520800
*0000730900000073657475702e6366677406000000676c6f62616c730d00000064697374757469
*6c732e6366677404000000757365727405000000706f73697874010000002e7400000000731300
*00007e2f25737079646973747574696c732e6366677337000000636f6e6669675f66696c652829
*2074797065206d75737420626520276c6f63616c272c2027676c6f62616c272c206f7220277573
*6572274e280a00000074020000006f7374040000007061746874040000006a6f696e7407000000
*6469726e616d657409000000646973747574696c7374080000005f5f66696c655f5f7404000000
*6e616d65740a000000657870616e64757365725201000000740a00000056616c75654572726f72
*280200000074040000006b696e647403000000646f742800000000280000000073320000006275
*696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c
*7365746f70742e707952040000000a000000731400000000050d0105010d0109011a020d011d01
*1b01030163030000000a000000090000004300000073b40100006401006402006b00006c01007d
*0300017402006903006403007c0000830200017c03008300007d04007c04006904007c00006701
*00830100017833017c0100690500830000445d25015c02007d05007d06007c0600640b006a0800
*6f2400017402006907006404007c05007c0000830300017c04006908007c050083010001714600
*017c04006909007c0500830100702400017402006903006405007c05007c0000830300017c0400
*690a007c0500830100016e01000178b1007c0600690500830000445da3005c02007d07007d0800
*7c0800640b006a08006f5e00017402006903006406007c05007c07007c0000830400017c040069
*0b007c05007c0700830200017c0400690c007c0500830100702400017402006907006407007c05
*007c0000830300017c04006908007c0500830100017167010171c400017402006903006408007c
*05007c07007c08007c0000830500017c0400690d007c05007c07007c08008303000171c4005771
*4600577402006907006409007c0000830200017c0200702a0001740e007c0000640a008302007d
*09007c0400690f007c0900830100017c0900691000830000016e010001640b0053280c00000073
*5901000045646974206120636f6e66696775726174696f6e2066696c6520746f20696e636c7564
*65206073657474696e6773600a0a202020206073657474696e6773602069732061206469637469
*6f6e617279206f662064696374696f6e6172696573206f722060604e6f6e6560602076616c7565
*732c206b657965642062790a20202020636f6d6d616e642f73656374696f6e206e616d652e2020
*412060604e6f6e6560602076616c7565206d65616e7320746f2064656c6574652074686520656e
*746972652073656374696f6e2c0a202020207768696c6520612064696374696f6e617279206c69
*7374732073657474696e677320746f206265206368616e676564206f722064656c657465642069
*6e20746861742073656374696f6e2e0a20202020412073657474696e67206f662060604e6f6e65
*6060206d65616e7320746f2064656c65746520746861742073657474696e672e0a2020202069ff
*ffffff2801000000740f000000526177436f6e666967506172736572731d00000052656164696e
*6720636f6e66696775726174696f6e2066726f6d202573731d00000044656c6574696e67207365
*6374696f6e205b25735d2066726f6d202573731d000000416464696e67206e6577207365637469
*6f6e205b25735d20746f202573731600000044656c6574696e672025732e25732066726f6d2025
*73732300000044656c6574696e6720656d707479205b25735d2073656374696f6e2066726f6d20
*2573731900000053657474696e672025732e257320746f20257220696e202573730a0000005772
*6974696e672025737401000000774e2811000000740c000000436f6e6669675061727365725219
*00000052020000007405000000646562756774040000007265616474050000006974656d737404
*0000004e6f6e657404000000696e666f740e00000072656d6f76655f73656374696f6e740b0000
*006861735f73656374696f6e740b0000006164645f73656374696f6e740d00000072656d6f7665
*5f6f7074696f6e74070000006f7074696f6e73740300000073657474040000006f70656e740500
*000077726974657405000000636c6f7365280a000000740800000066696c656e616d6574080000
*0073657474696e677374070000006472795f72756e521900000074040000006f70747374070000
*0073656374696f6e522500000074060000006f7074696f6e740500000076616c75657401000000
*662800000000280000000073320000006275696c645c62646973742e77696e33325c6567675c73
*65747570746f6f6c735c636f6d6d616e645c7365746f70742e707952050000002a000000733e00
*0000000810011001090110010d000c010d01130111021001130111010d000c010d0109010d0210
*01100109010a0115020601030110021b02100107010f000d006300000000000000000500000042
*000000733b0000006500005a01006400005a0200640c00640d00640e006703005a030064010064
*04006702005a0400640a008400005a0500640b008400005a06005253280f000000733c00000041
*62737472616374206261736520636c61737320666f7220636f6d6d616e64732074686174206d65
*7373207769746820636f6e6669672066696c6573730d000000676c6f62616c2d636f6e66696774
*0100000067733000000073617665206f7074696f6e7320746f2074686520736974652d77696465
*20646973747574696c732e6366672066696c65730b000000757365722d636f6e66696774010000
*0075733700000073617665206f7074696f6e7320746f207468652063757272656e742075736572
*2773207079646973747574696c732e6366672066696c65730900000066696c656e616d653d5231
*000000732d000000636f6e66696775726174696f6e2066696c6520746f20757365202864656661
*756c743d73657475702e636667296301000000010000000200000043000000731f000000640000
*7c00005f01006400007c00005f02006400007c00005f03006400005328010000004e2804000000
*521f000000740d000000676c6f62616c5f636f6e666967740b000000757365725f636f6e666967
*522a0000002801000000740400000073656c662800000000280000000073320000006275696c64
*5c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c736574
*6f70742e70797412000000696e697469616c697a655f6f7074696f6e7363000000730600000000
*0109010901630100000002000000030000004300000073c00000006700007d01007c0000690000
*6f1700017c0100690100740200640100830100830100016e0100017c00006903006f1700017c01
*00690100740200640200830100830100016e0100017c00006904006400006a09006f1400017c01
*006901007c0000690400830100016e0100017c0100701700017c01006901007402006403008301
*00830100016e0100017406007c01008301006404006a04006f1300017407006405007c01008302
*008201006e0100017c01005c01007c00005f04006400005328060000004e5209000000520a0000
*0052080000006901000000732f0000004d7573742073706563696679206f6e6c79206f6e652063
*6f6e66696775726174696f6e2066696c65206f7074696f6e280800000052340000007406000000
*617070656e6452040000005235000000522a000000521f00000074030000006c656e7414000000
*446973747574696c734f7074696f6e4572726f7228020000005236000000740900000066696c65
*6e616d65732800000000280000000073320000006275696c645c62646973742e77696e33325c65
*67675c7365747570746f6f6c735c636f6d6d616e645c7365746f70742e7079741000000066696e
*616c697a655f6f7074696f6e7368000000731c000000000106010a0117010a0117011001140107
*0117011301030103010d022803000000730d000000676c6f62616c2d636f6e6669675232000000
*733000000073617665206f7074696f6e7320746f2074686520736974652d776964652064697374
*7574696c732e6366672066696c652803000000730b000000757365722d636f6e66696752330000
*00733700000073617665206f7074696f6e7320746f207468652063757272656e74207573657227
*73207079646973747574696c732e6366672066696c652803000000730900000066696c656e616d
*653d5231000000732d000000636f6e66696775726174696f6e2066696c6520746f207573652028
*64656661756c743d73657475702e63666729280700000074080000005f5f6e616d655f5f740a00
*00005f5f6d6f64756c655f5f74070000005f5f646f635f5f740c000000757365725f6f7074696f
*6e73740f000000626f6f6c65616e5f6f7074696f6e735237000000523c00000028000000002800
*000000280000000073320000006275696c645c62646973742e77696e33325c6567675c73657475
*70746f6f6c735c636f6d6d616e645c7365746f70742e7079520600000053000000731400000006
*0106030001030100010301000109040c0309056300000000000000000600000042000000735800
*00006500005a01006400005a02006401005a030064110064120064130064140067040065040069
*0500175a0500650400690600640b00670100175a0600640e008400005a0700640f008400005a08
*006410008400005a09005253281500000073230000005361766520636f6d6d616e642d6c696e65
*206f7074696f6e7320746f20612066696c65733100000073657420616e206f7074696f6e20696e
*2073657475702e636667206f7220616e6f7468657220636f6e6669672066696c65730800000063
*6f6d6d616e643d740100000063731c000000636f6d6d616e6420746f2073657420616e206f7074
*696f6e20666f7273070000006f7074696f6e3d74010000006f730d0000006f7074696f6e20746f
*20736574730a0000007365742d76616c75653d740100000073731300000076616c7565206f6620
*746865206f7074696f6e740600000072656d6f7665740100000072731800000072656d6f766520
*28756e73657429207468652076616c756563010000000100000002000000430000007335000000
*7400006901007c0000830100016400007c00005f03006400007c00005f04006400007c00005f05
*006400007c00005f06006400005328010000004e280700000052060000005237000000521f0000
*007407000000636f6d6d616e64522f00000074090000007365745f76616c756552450000002801
*00000052360000002800000000280000000073320000006275696c645c62646973742e77696e33
*325c6567675c7365747570746f6f6c735c636f6d6d616e645c7365746f70742e70795237000000
*8a000000730a00000000010d010901090109016301000000010000000200000043000000736c00
*00007400006901007c0000830100017c00006902006400006a0800701000017c00006904006400
*006a08006f1000017405006401008301008201006e0100017c00006906006400006a08006f1b00
*017c00006907000c6f1000017405006402008301008201006e0100016400005328030000004e73
*250000004d7573742073706563696679202d2d636f6d6d616e64202a616e642a202d2d6f707469
*6f6e73240000004d7573742073706563696679202d2d7365742d76616c7565206f72202d2d7265
*6d6f766528080000005206000000523c0000005247000000521f000000522f000000523a000000
*52480000005245000000280100000052360000002800000000280000000073320000006275696c
*645c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c7365
*746f70742e7079523c00000091000000730a00000000010d01200110011b016301000000010000
*000800000043000000733d0000007400007c00006901006801006801007c00006902007c000069
*0300690400640100640200830200367c0000690500367c00006906008303000164000053280300
*00004e74010000002d74010000005f28070000005205000000522a0000005248000000522f0000
*0074070000007265706c6163655247000000522c00000028010000005236000000280000000028
*0000000073320000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f
*6c735c636f6d6d616e645c7365746f70742e7079740300000072756e9800000073080000000001
*03010901230228030000007308000000636f6d6d616e643d5242000000731c000000636f6d6d61
*6e6420746f2073657420616e206f7074696f6e20666f72280300000073070000006f7074696f6e
*3d5243000000730d0000006f7074696f6e20746f207365742803000000730a0000007365742d76
*616c75653d5244000000731300000076616c7565206f6620746865206f7074696f6e2803000000
*730600000072656d6f76655246000000731800000072656d6f76652028756e7365742920746865
*2076616c7565280a000000523d000000523e000000523f000000740b0000006465736372697074
*696f6e5206000000524000000052410000005237000000523c000000524c000000280000000028
*00000000280000000073320000006275696c645c62646973742e77696e33325c6567675c736574
*7570746f6f6c735c636f6d6d616e645c7365746f70742e707952070000007c0000007316000000
*06010602060303010301030106010a02100209070907280e0000005212000000520e000000740a
*0000007365747570746f6f6c735200000000740e000000646973747574696c732e7574696c5201
*00000052020000007410000000646973747574696c732e6572726f727374070000005f5f616c6c
*5f5f5204000000740500000046616c736552050000005206000000520700000028000000002800
*000000280000000073320000006275696c645c62646973742e77696e33325c6567675c73657475
*70746f6f6c735c636f6d6d616e645c7365746f70742e707974080000003c6d6f64756c653e0100
*0000731200000018011001100110010a0212030c200c291629
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/test.py
hunk ./setuptools-0.6c14devdev.egg/setuptools/command/test.py 1
+from setuptools import Command
+from distutils.errors import DistutilsOptionError
+import sys
+from pkg_resources import *
+from unittest import TestLoader, main
+
+class ScanningLoader(TestLoader):
+
+    def loadTestsFromModule(self, module):
+        """Return a suite of all tests cases contained in the given module
+
+        If the module is a package, load tests from all the modules in it.
+        If the module has an ``additional_tests`` function, call it and add
+        the return value to the tests.
+        """
+        tests = []
+        if module.__name__!='setuptools.tests.doctest':  # ugh
+            tests.append(TestLoader.loadTestsFromModule(self,module))
+
+        if hasattr(module, "additional_tests"):
+            tests.append(module.additional_tests())
+
+        if hasattr(module, '__path__'):
+            for file in resource_listdir(module.__name__, ''):
+                if file.endswith('.py') and file!='__init__.py':
+                    submodule = module.__name__+'.'+file[:-3]
+                else:
+                    if resource_exists(
+                        module.__name__, file+'/__init__.py'
+                    ):
+                        submodule = module.__name__+'.'+file
+                    else:
+                        continue
+                tests.append(self.loadTestsFromName(submodule))
+
+        if len(tests)!=1:
+            return self.suiteClass(tests)
+        else:
+            return tests[0] # don't create a nested suite for only one return
+
+
+class test(Command):
+    """Command to run unit tests after in-place build"""
+
+    description = "run unit tests after in-place build"
+
+    user_options = [
+        ('test-module=','m', "Run 'test_suite' in specified module"),
+        ('test-suite=','s',
+            "Test suite to run (e.g. 'some_module.test_suite')"),
+        ('test-runner=','r', "Test runner to use"),
+    ]
+
+    def initialize_options(self):
+        self.test_runner = None
+        self.test_suite = None
+        self.test_module = None
+        self.test_loader = None
+
+    def finalize_options(self):
+        if self.test_suite is None:
+            if self.test_module is None:
+                self.test_suite = self.distribution.test_suite
+            else:
+                self.test_suite = self.test_module+".test_suite"
+        elif self.test_module:
+            raise DistutilsOptionError(
+                "You may specify a module or a suite, but not both"
+            )
+
+        self.test_args = [self.test_suite]
+
+        if self.verbose:
+            self.test_args.insert(0,'--verbose')
+        if self.test_loader is None:
+            self.test_loader = getattr(self.distribution,'test_loader',None)
+        if self.test_loader is None:
+            self.test_loader = "setuptools.command.test:ScanningLoader"
+        if self.test_runner is None:
+            self.test_runner = getattr(self.distribution,'test_runner',None)
+
+
+    def with_project_on_sys_path(self, func):
+        # Ensure metadata is up-to-date
+        self.run_command('egg_info')
+
+        # Build extensions in-place
+        self.reinitialize_command('build_ext', inplace=1)
+        self.run_command('build_ext')
+
+        ei_cmd = self.get_finalized_command("egg_info")
+
+        old_path = sys.path[:]
+        old_modules = sys.modules.copy()
+
+        try:
+            sys.path.insert(0, normalize_path(ei_cmd.egg_base))
+            working_set.__init__()
+            add_activation_listener(lambda dist: dist.activate())
+            require('%s==%s' % (ei_cmd.egg_name, ei_cmd.egg_version))
+            func()
+        finally:
+            sys.path[:] = old_path
+            sys.modules.clear()
+            sys.modules.update(old_modules)
+            working_set.__init__()
+
+
+    def run(self):
+        if self.distribution.install_requires:
+            self.distribution.fetch_build_eggs(self.distribution.install_requires)
+        if self.distribution.tests_require:
+            self.distribution.fetch_build_eggs(self.distribution.tests_require)
+
+        if self.test_suite:
+            cmd = ' '.join(self.test_args)
+            if self.dry_run:
+                self.announce('skipping "unittest %s" (dry run)' % cmd)
+            else:
+                self.announce('running "unittest %s"' % cmd)
+                self.with_project_on_sys_path(self.run_tests)
+
+
+    def run_tests(self):
+        import unittest
+        loader_ep = EntryPoint.parse("x="+self.test_loader)
+        loader_class = loader_ep.load(require=False)
+        runner = None
+        if self.test_runner is not None:
+            runner_ep = EntryPoint.parse("x="+self.test_runner)
+            runner_class = runner_ep.load(require=False)
+            runner = runner_class()
+        unittest.main(
+            None, None, [unittest.__file__]+self.test_args,
+            testRunner = runner, testLoader = loader_class()
+        )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/test.pyc
binary ./setuptools-0.6c14devdev.egg/setuptools/command/test.pyc
oldhex
*
newhex
*d1f20d0a481ef84b6300000000000000000800000040000000737c0000006400006401006b0000
*6c01005a0100016400006402006b02006c03005a0300016400006403006b04005a040064000064
*04006b0500546400006405006b06006c07005a07006c08005a0800016406006507006601006407
*00840000830000595a0900640800650100660100640900840000830000595a0a0064030053280a
*00000069ffffffff28010000007407000000436f6d6d616e642801000000741400000044697374
*7574696c734f7074696f6e4572726f724e280100000074010000002a2802000000740a00000054
*6573744c6f6164657274040000006d61696e740e0000005363616e6e696e674c6f616465726300
*00000000000000010000004200000073110000006500005a01006400008400005a020052532801
*000000630200000005000000050000004300000073330100006700007d02007c01006900006401
*006a03006f1d00017c02006901007402006903007c00007c0100830200830100016e0100017404
*007c01006402008302006f1700017c02006901007c0100690500830000830100016e0100017404
*007c01006403008302006f9c00017899007406007c0100690000640400830200445d81007d0300
*7c03006907006405008301006f2600017c03006406006a03006f1900017c010069000064070017
*7c030064080020177d04006e3000017408007c01006900007c0300640900178302006f1500017c
*0100690000640700177c0300177d04006e040001717d007c02006901007c00006909007c040083
*010083010001717d00576e010001740a007c0200830100640a006a03006f0e00017c0000690b00
*7c020083010053017c0200640b001953640c0053280d000000730701000052657475726e206120
*7375697465206f6620616c6c20746573747320636173657320636f6e7461696e656420696e2074
*686520676976656e206d6f64756c650a0a2020202020202020496620746865206d6f64756c6520
*69732061207061636b6167652c206c6f61642074657374732066726f6d20616c6c20746865206d
*6f64756c657320696e2069742e0a2020202020202020496620746865206d6f64756c6520686173
*20616e2060606164646974696f6e616c5f746573747360602066756e6374696f6e2c2063616c6c
*20697420616e64206164640a20202020202020207468652072657475726e2076616c756520746f
*207468652074657374732e0a202020202020202073180000007365747570746f6f6c732e746573
*74732e646f637465737474100000006164646974696f6e616c5f746573747374080000005f5f70
*6174685f5f740000000073030000002e7079730b0000005f5f696e69745f5f2e70797401000000
*2e69fdffffff730c0000002f5f5f696e69745f5f2e7079690100000069000000004e280c000000
*74080000005f5f6e616d655f5f7406000000617070656e64520300000074130000006c6f616454
*6573747346726f6d4d6f64756c6574070000006861736174747252060000007410000000726573
*6f757263655f6c6973746469727408000000656e647377697468740f0000007265736f75726365
*5f65786973747374110000006c6f6164546573747346726f6d4e616d6574030000006c656e740a
*0000007375697465436c6173732805000000740400000073656c6674060000006d6f64756c6574
*050000007465737473740400000066696c6574090000007375626d6f64756c6528000000002800
*00000073300000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c
*735c636f6d6d616e645c746573742e7079520c0000000900000073240000000007060110011d02
*100117021001130006011d01190203011402150203011e0213010e022803000000520a00000074
*0a0000005f5f6d6f64756c655f5f520c0000002800000000280000000028000000007330000000
*6275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e
*645c746573742e7079520500000007000000730200000006027404000000746573746300000000
*00000000050000004200000073500000006500005a01006400005a02006401005a030064100064
*11006412006703005a0400640b008400005a0500640c008400005a0600640d008400005a070064
*0e008400005a0800640f008400005a090052532813000000732e000000436f6d6d616e6420746f
*2072756e20756e697420746573747320616674657220696e2d706c616365206275696c64732300
*000072756e20756e697420746573747320616674657220696e2d706c616365206275696c64730c
*000000746573742d6d6f64756c653d74010000006d732400000052756e2027746573745f737569
*74652720696e20737065636966696564206d6f64756c65730b000000746573742d73756974653d
*74010000007373310000005465737420737569746520746f2072756e2028652e672e2027736f6d
*655f6d6f64756c652e746573745f73756974652729730c000000746573742d72756e6e65723d74
*01000000727312000000546573742072756e6e657220746f207573656301000000010000000200
*00004300000073280000006400007c00005f01006400007c00005f02006400007c00005f030064
*00007c00005f04006400005328010000004e280500000074040000004e6f6e65740b0000007465
*73745f72756e6e6572740a000000746573745f7375697465740b000000746573745f6d6f64756c
*65740b000000746573745f6c6f6164657228010000005214000000280000000028000000007330
*0000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d
*6d616e645c746573742e70797412000000696e697469616c697a655f6f7074696f6e7336000000
*730800000000010901090109016301000000010000000400000043000000730a0100007c000069
*00006400006a08006f3700017c00006902006400006a08006f1300017c00006903006900007c00
*005f0000716100017c0000690200640100177c00005f00006e1b00017c00006902006f10000174
*04006402008301008201006e0100017c00006900006701007c00005f05007c00006906006f1700
*017c0000690500690700640300640400830200016e0100017c00006908006400006a08006f1c00
*017409007c00006903006405006400008303007c00005f08006e0100017c00006908006400006a
*08006f0d00016406007c00005f08006e0100017c0000690a006400006a08006f1c00017409007c
*00006903006407006400008303007c00005f0a006e0100016400005328080000004e730b000000
*2e746573745f73756974657331000000596f75206d617920737065636966792061206d6f64756c
*65206f7220612073756974652c20627574206e6f7420626f7468690000000073090000002d2d76
*6572626f7365522200000073260000007365747570746f6f6c732e636f6d6d616e642e74657374
*3a5363616e6e696e674c6f61646572521f000000280b0000005220000000521e00000052210000
*00740c000000646973747269627574696f6e52010000007409000000746573745f617267737407
*000000766572626f73657406000000696e73657274522200000074070000006765746174747252
*1f000000280100000052140000002800000000280000000073300000006275696c645c62646973
*742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c746573742e707974
*1000000066696e616c697a655f6f7074696f6e733c000000732000000000011001100113021401
*0a0103010d030f020a01170110011c0110010d0110016302000000050000000800000043000000
*73e60000007c0000690000640100830100017c0000690100640200640300640400830101017c00
*00690000640200830100017c00006902006401008301007d02007403006904001e7d0300740300
*6905006906008300007d04007a58007403006904006907006405007408007c0200690900830100
*83020001740a00690b0083000001740c0064060084000083010001740d006407007c0200690e00
*7c0200690f0066020016830100017c010083000001576400007c03007403006904002874030069
*0500691000830000017403006905006911007c040083010001740a00690b008300000158640000
*5328080000004e74080000006567675f696e666f74090000006275696c645f6578747407000000
*696e706c616365690100000069000000006301000000010000000100000053000000730a000000
*7c0000690000830000532800000000280100000074080000006163746976617465280100000074
*04000000646973742800000000280000000073300000006275696c645c62646973742e77696e33
*325c6567675c7365747570746f6f6c735c636f6d6d616e645c746573742e707974080000003c6c
*616d6264613e630000007300000000730600000025733d3d25732812000000740b00000072756e
*5f636f6d6d616e6474140000007265696e697469616c697a655f636f6d6d616e64741500000067
*65745f66696e616c697a65645f636f6d6d616e6474030000007379737404000000706174687407
*0000006d6f64756c65737404000000636f70795227000000740e0000006e6f726d616c697a655f
*7061746874080000006567675f62617365740b000000776f726b696e675f73657474080000005f
*5f696e69745f5f74170000006164645f61637469766174696f6e5f6c697374656e657274070000
*007265717569726574080000006567675f6e616d65740b0000006567675f76657273696f6e7405
*000000636c656172740600000075706461746528050000005214000000740400000066756e6374
*0600000065695f636d6474080000006f6c645f70617468740b0000006f6c645f6d6f64756c6573
*2800000000280000000073300000006275696c645c62646973742e77696e33325c6567675c7365
*747570746f6f6c735c636f6d6d616e645c746573742e70797418000000776974685f70726f6a65
*63745f6f6e5f7379735f7061746853000000732000000000020d0313010d020f020a010f020301
*1c010a010d011a010b020a010d011001630100000002000000030000004300000073b20000007c
*00006900006901006f1a00017c00006900006902007c0000690000690100830100016e0100017c
*00006900006903006f1a00017c00006900006902007c0000690000690300830100016e0100017c
*00006904006f5600016401006905007c00006906008301007d01007c00006907006f1500017c00
*006908006402007c0100168301000171ae00017c00006908006403007c010016830100017c0000
*6909007c0000690a00830100016e0100016400005328040000004e740100000020732000000073
*6b697070696e672022756e6974746573742025732220286472792072756e29731500000072756e
*6e696e672022756e69747465737420257322280b00000052240000007410000000696e7374616c
*6c5f7265717569726573741000000066657463685f6275696c645f65676773740d000000746573
*74735f72657175697265522000000074040000006a6f696e522500000074070000006472795f72
*756e7408000000616e6e6f756e63655245000000740900000072756e5f74657374732802000000
*52140000007403000000636d642800000000280000000073300000006275696c645c6264697374
*2e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c746573742e70797403
*00000072756e6d000000731400000000010d011a010d011a020a0112010a011502110163010000
*0007000000090000004300000073b20000006401006400006b00007d0100740100690200640200
*7c0000690300178301007d02007c02006904006403007405008300017d03006400007d04007c00
*006907006400006a09006f3500017401006902006402007c0000690700178301007d05007c0500
*6904006403007405008300017d06007c06008300007d04006e0100017c01006908006400006400
*007c01006909006701007c0000690a00176404007c04006405007c030083000083030201640000
*5328060000004e69ffffffff7302000000783d523c000000740a0000007465737452756e6e6572
*740a000000746573744c6f61646572280b0000007408000000756e697474657374740a00000045
*6e747279506f696e7474050000007061727365522200000074040000006c6f6164740500000046
*616c7365521e000000521f000000520400000074080000005f5f66696c655f5f52250000002807
*0000005214000000525200000074090000006c6f616465725f6570740c0000006c6f616465725f
*636c617373740600000072756e6e6572740900000072756e6e65725f6570740c00000072756e6e
*65725f636c6173732800000000280000000073300000006275696c645c62646973742e77696e33
*325c6567675c7365747570746f6f6c735c636f6d6d616e645c746573742e7079524d0000007c00
*0000731600000000010c011601120106011001160112010d01060119012803000000730c000000
*746573742d6d6f64756c653d521b000000732400000052756e2027746573745f73756974652720
*696e20737065636966696564206d6f64756c652803000000730b000000746573742d7375697465
*3d521c00000073310000005465737420737569746520746f2072756e2028652e672e2027736f6d
*655f6d6f64756c652e746573745f737569746527292803000000730c000000746573742d72756e
*6e65723d521d0000007312000000546573742072756e6e657220746f20757365280a000000520a
*000000521900000074070000005f5f646f635f5f740b0000006465736372697074696f6e740c00
*0000757365725f6f7074696f6e73522300000052290000005245000000524f000000524d000000
*28000000002800000000280000000073300000006275696c645c62646973742e77696e33325c65
*67675c7365747570746f6f6c735c636f6d6d616e645c746573742e7079521a0000002a00000073
*16000000060106020603030100010301090309060917091a090f280b000000740a000000736574
*7570746f6f6c7352000000007410000000646973747574696c732e6572726f7273520100000052
*33000000740d000000706b675f7265736f75726365735252000000520300000052040000005205
*000000521a00000028000000002800000000280000000073300000006275696c645c6264697374
*2e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c746573742e70797408
*0000003c6d6f64756c653e01000000730c000000100110010c010a0116021623
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/upload.py
hunk ./setuptools-0.6c14devdev.egg/setuptools/command/upload.py 1
+"""distutils.command.upload
+
+Implements the Distutils 'upload' subcommand (upload package to PyPI)."""
+
+from distutils.errors import *
+from distutils.core import Command
+from distutils.spawn import spawn
+from distutils import log
+try:
+    from hashlib import md5
+except ImportError:
+    from md5 import md5
+import os
+import socket
+import platform
+import ConfigParser
+import httplib
+import base64
+import urlparse
+import cStringIO as StringIO
+
+class upload(Command):
+
+    description = "upload binary package to PyPI"
+
+    DEFAULT_REPOSITORY = 'http://pypi.python.org/pypi'
+
+    user_options = [
+        ('repository=', 'r',
+         "url of repository [default: %s]" % DEFAULT_REPOSITORY),
+        ('show-response', None,
+         'display full response text from server'),
+        ('sign', 's',
+         'sign files to upload using gpg'),
+        ('identity=', 'i', 'GPG identity used to sign files'),
+        ]
+    boolean_options = ['show-response', 'sign']
+
+    def initialize_options(self):
+        self.username = ''
+        self.password = ''
+        self.repository = ''
+        self.show_response = 0
+        self.sign = False
+        self.identity = None
+
+    def finalize_options(self):
+        if self.identity and not self.sign:
+            raise DistutilsOptionError(
+                "Must use --sign for --identity to have meaning"
+            )
+        if os.environ.has_key('HOME'):
+            rc = os.path.join(os.environ['HOME'], '.pypirc')
+            if os.path.exists(rc):
+                self.announce('Using PyPI login from %s' % rc)
+                config = ConfigParser.ConfigParser({
+                        'username':'',
+                        'password':'',
+                        'repository':''})
+                config.read(rc)
+                if not self.repository:
+                    self.repository = config.get('server-login', 'repository')
+                if not self.username:
+                    self.username = config.get('server-login', 'username')
+                if not self.password:
+                    self.password = config.get('server-login', 'password')
+        if not self.repository:
+            self.repository = self.DEFAULT_REPOSITORY
+
+    def run(self):
+        if not self.distribution.dist_files:
+            raise DistutilsOptionError("No dist file created in earlier command")
+        for command, pyversion, filename in self.distribution.dist_files:
+            self.upload_file(command, pyversion, filename)
+
+    def upload_file(self, command, pyversion, filename):
+        # Sign if requested
+        if self.sign:
+            gpg_args = ["gpg", "--detach-sign", "-a", filename]
+            if self.identity:
+                gpg_args[2:2] = ["--local-user", self.identity]
+            spawn(gpg_args,
+                  dry_run=self.dry_run)
+
+        # Fill in the data
+        content = open(filename,'rb').read()
+        basename = os.path.basename(filename)
+        comment = ''
+        if command=='bdist_egg' and self.distribution.has_ext_modules():
+            comment = "built on %s" % platform.platform(terse=1)
+        data = {
+            ':action':'file_upload',
+            'protcol_version':'1',
+            'name':self.distribution.get_name(),
+            'version':self.distribution.get_version(),
+            'content':(basename,content),
+            'filetype':command,
+            'pyversion':pyversion,
+            'md5_digest':md5(content).hexdigest(),
+            }
+        if command == 'bdist_rpm':
+            dist, version, id = platform.dist()
+            if dist:
+                comment = 'built for %s %s' % (dist, version)
+        elif command == 'bdist_dumb':
+            comment = 'built for %s' % platform.platform(terse=1)
+        data['comment'] = comment
+
+        if self.sign:
+            data['gpg_signature'] = (os.path.basename(filename) + ".asc",
+                                     open(filename+".asc").read())
+
+        # set up the authentication
+        auth = "Basic " + base64.encodestring(self.username + ":" + self.password).strip()
+
+        # Build up the MIME payload for the POST data
+        boundary = '--------------GHSKFJDLGDS7543FJKLFHRE75642756743254'
+        sep_boundary = '\n--' + boundary
+        end_boundary = sep_boundary + '--'
+        body = StringIO.StringIO()
+        for key, value in data.items():
+            # handle multiple entries for the same name
+            if type(value) != type([]):
+                value = [value]
+            for value in value:
+                if type(value) is tuple:
+                    fn = ';filename="%s"' % value[0]
+                    value = value[1]
+                else:
+                    fn = ""
+                value = str(value)
+                body.write(sep_boundary)
+                body.write('\nContent-Disposition: form-data; name="%s"'%key)
+                body.write(fn)
+                body.write("\n\n")
+                body.write(value)
+                if value and value[-1] == '\r':
+                    body.write('\n')  # write an extra newline (lurve Macs)
+        body.write(end_boundary)
+        body.write("\n")
+        body = body.getvalue()
+
+        self.announce("Submitting %s to %s" % (filename, self.repository), log.INFO)
+
+        # build the Request
+        # We can't use urllib2 since we need to send the Basic
+        # auth right with the first request
+        schema, netloc, url, params, query, fragments = \
+            urlparse.urlparse(self.repository)
+        assert not params and not query and not fragments
+        if schema == 'http':
+            http = httplib.HTTPConnection(netloc)
+        elif schema == 'https':
+            http = httplib.HTTPSConnection(netloc)
+        else:
+            raise AssertionError, "unsupported schema "+schema
+
+        data = ''
+        loglevel = log.INFO
+        try:
+            http.connect()
+            http.putrequest("POST", url)
+            http.putheader('Content-type',
+                           'multipart/form-data; boundary=%s'%boundary)
+            http.putheader('Content-length', str(len(body)))
+            http.putheader('Authorization', auth)
+            http.endheaders()
+            http.send(body)
+        except socket.error, e:
+            self.announce(str(e), log.ERROR)
+            return
+
+        r = http.getresponse()
+        if r.status == 200:
+            self.announce('Server response (%s): %s' % (r.status, r.reason),
+                          log.INFO)
+        else:
+            self.announce('Upload failed (%s): %s' % (r.status, r.reason),
+                          log.ERROR)
+        if self.show_response:
+            print '-'*75, r.read(), '-'*75
addfile ./setuptools-0.6c14devdev.egg/setuptools/command/upload.pyc
binary ./setuptools-0.6c14devdev.egg/setuptools/command/upload.pyc
oldhex
*
newhex
*d1f20d0a481ef84b630000000000000000130000004000000073f40000006400005a0000640100
*6402006b0100546401006403006b02006c03005a0300016401006404006b04006c05005a050001
*6401006405006b06006c07005a0700017914006401006406006b08006c09005a090001576e2300
*04650a006a0a006f1700010101016401006406006b09006c09005a0900016e0200015864010064
*07006b0b005a0b006401006407006b0c005a0c006401006407006b0d005a0d006401006407006b
*0e005a0e006401006407006b0f005a0f006401006407006b10005a10006401006407006b11005a
*11006401006407006b12005a1300640800650300660100640900840000830000595a1400640700
*53280a0000007360000000646973747574696c732e636f6d6d616e642e75706c6f61640a0a496d
*706c656d656e74732074686520446973747574696c73202775706c6f61642720737562636f6d6d
*616e64202875706c6f6164207061636b61676520746f2050795049292e69ffffffff2801000000
*74010000002a28010000007407000000436f6d6d616e6428010000007405000000737061776e28
*0100000074030000006c6f67280100000074030000006d64354e740600000075706c6f61646300
*00000000000000060000004200000073630000006500005a01006400005a02006401005a030064
*0200640300640400650300166603006412006413006414006704005a0500640500640700670200
*5a0600640d008400005a0700640e008400005a0800640f008400005a09006410008400005a0a00
*52532815000000731d00000075706c6f61642062696e617279207061636b61676520746f205079
*5049731b000000687474703a2f2f707970692e707974686f6e2e6f72672f70797069730b000000
*7265706f7369746f72793d740100000072731f00000075726c206f66207265706f7369746f7279
*205b64656661756c743a2025735d730d00000073686f772d726573706f6e736573260000006469
*73706c61792066756c6c20726573706f6e736520746578742066726f6d20736572766572740400
*00007369676e740100000073731e0000007369676e2066696c657320746f2075706c6f61642075
*73696e672067706773090000006964656e746974793d740100000069731f000000475047206964
*656e74697479207573656420746f207369676e2066696c65736301000000010000000200000043
*000000733a0000006401007c00005f00006401007c00005f01006401007c00005f02006402007c
*00005f03007404007c00005f05006400007c00005f07006400005328030000004e740000000069
*0000000028080000007408000000757365726e616d65740800000070617373776f7264740a0000
*007265706f7369746f7279740d00000073686f775f726573706f6e7365740500000046616c7365
*520700000074040000004e6f6e6574080000006964656e74697479280100000074040000007365
*6c662800000000280000000073320000006275696c645c62646973742e77696e33325c6567675c
*7365747570746f6f6c735c636f6d6d616e645c75706c6f61642e70797412000000696e69746961
*6c697a655f6f7074696f6e7327000000730c000000000109010901090109010901630100000003
*000000040000004300000073380100007c00006900006f1b00017c00006901000c6f1000017402
*006401008301008201006e0100017403006904006905006402008301006fe20001740300690600
*690700740300690400640200196403008302007d01007403006906006908007c01008301006faf
*00017c00006909006404007c01001683010001740a00690a006803006405006406003664050064
*070036640500640800368301007d02007c0200690b007c0100830100017c0000690c0070190001
*7c0200690d006409006408008302007c00005f0c006e0100017c0000690e00701900017c020069
*0d006409006406008302007c00005f0e006e0100017c0000690f00701900017c0200690d006409
*006407008302007c00005f0f0071160101711a01016e0100017c0000690c00701000017c000069
*10007c00005f0c006e01000164000053280a0000004e732e0000004d75737420757365202d2d73
*69676e20666f72202d2d6964656e7469747920746f2068617665206d65616e696e677404000000
*484f4d4573070000002e70797069726373180000005573696e672050795049206c6f67696e2066
*726f6d202573520a000000520b000000520c000000520d000000730c0000007365727665722d6c
*6f67696e2811000000521100000052070000007414000000446973747574696c734f7074696f6e
*4572726f7274020000006f737407000000656e7669726f6e74070000006861735f6b6579740400
*00007061746874040000006a6f696e74060000006578697374737408000000616e6e6f756e6365
*740c000000436f6e666967506172736572740400000072656164520d0000007403000000676574
*520b000000520c000000741200000044454641554c545f5245504f5349544f5259280300000052
*12000000740200000072637406000000636f6e6669672800000000280000000073320000006275
*696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c
*75706c6f61642e7079741000000066696e616c697a655f6f7074696f6e732f0000007328000000
*0001150103010d0213011c01130111010901070107010d010d010a0119010a0119010a0121010a
*01630100000004000000050000004300000073540000007c000069000069010070100001740200
*6401008301008201006e0100017830007c0000690000690100445d22005c03007d01007d02007d
*03007c00006903007c01007c02007c030083030001712a00576400005328020000004e73270000
*004e6f20646973742066696c65206372656174656420696e206561726c69657220636f6d6d616e
*642804000000740c000000646973747269627574696f6e740a000000646973745f66696c657352
*15000000740b00000075706c6f61645f66696c65280400000052120000007407000000636f6d6d
*616e647409000000707976657273696f6e740800000066696c656e616d65280000000028000000
*0073320000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c
*636f6d6d616e645c75706c6f61642e7079740300000072756e46000000730a00000000010d0110
*010d000f0163040000001e0000000a00000043000000733f0500007c00006900006f4d00016401
*006402006403007c03006704007d04007c00006901006f1a00016404007c00006901006702007c
*04006405006405002b6e0100017402007c04006406007c0000690300830101016e010001740400
*7c03006407008302006905008300007d05007406006907006908007c03008301007d0600640800
*7d07007c01006409006a02006f2a00017c0000690900690a008300006f1a0001640a00740b0069
*0b00640b00640c00830001167d07006e010001680800640d00640e0036640f00641000367c0000
*690900690c00830000641100367c0000690900690d00830000641200367c06007c050066020064
*1300367c0100641400367c020064150036740e007c0500830100690f00830000641600367d0800
*7c01006417006a02006f340001740b006910008300005c03007d09007d0a007d0b007c09006f14
*00016418007c09007c0a00660200167d0700718501016e2800017c01006419006a02006f1a0001
*641a00740b00690b00640b00640c00830001167d07006e0100017c07007c0800641b003c7c0000
*6900006f3400017406006907006908007c0300830100641c00177404007c0300641c0017830100
*6905008300006602007c0800641d003c6e010001641e007411006912007c0000691300641f0017
*7c000069140017830100691500830000177d0c006420007d0d006421007c0d00177d0e007c0e00
*642200177d0f007416006916008300007d10007800017c0800691700830000445df2005c02007d
*11007d12007418007c12008301007418006700008301006a03006f0d00017c12006701007d1200
*6e01000178bd007c1200445db5007d12007418007c12008301007419006a08006f1c0001642300
*7c120064240019167d13007c1200640c00197d12006e0700016408007d1300741a007c12008301
*007d12007c1000691b007c0e00830100017c1000691b006425007c110016830100017c1000691b
*007c1300830100017c1000691b00642600830100017c1000691b007c1200830100017c12006f22
*00017c1200642700196428006a02006f1100017c1000691b006429008301000171600201716002
*57712702577c1000691b007c0f00830100017c1000691b00642900830100017c1000691c008300
*007d10007c0000691d00642a007c03007c0000691e0066020016741f0069200083020001742100
*6921007c0000691e008301005c06007d14007d15007d16007d17007d18007d19007c17000c6f10
*00017c18000c6f0800017c19000c70070001742200820100017c1400642b006a02006f13000174
*23006924007c15008301007d1a006e2e00017c1400642c006a02006f1300017423006925007c15
*008301007d1a006e0e0001742200642d007c1400178202006408007d0800741f006920007d1b00
*7975007c1a00692600830000017c1a00692700642e007c1600830200017c1a00692800642f0064
*30007c0d0016830200017c1a00692800643100741a007429007c1000830100830100830200017c
*1a006928006432007c0c00830200017c1a00692a00830000017c1a00692b007c10008301000157
*6e320004742c00692d006a0a006f230001017d1c00017c0000691d00741a007c1c00830100741f
*00692e00830200016400005301587c1a00692f008300007d1d007c1d006930006433006a02006f
*2700017c0000691d006434007c1d006930007c1d0069310066020016741f00692000830200016e
*2400017c0000691d006435007c1d006930007c1d0069310066020016741f00692e00830200017c
*00006932006f1f000164360064370014477c1d00690500830000476436006437001447486e0100
*016400005328380000004e7403000000677067730d0000002d2d6465746163682d7369676e7302
*0000002d61730c0000002d2d6c6f63616c2d75736572690200000074070000006472795f72756e
*74020000007262520a000000740900000062646973745f656767730b0000006275696c74206f6e
*202573740500000074657273656901000000740b00000066696c655f75706c6f61647307000000
*3a616374696f6e740100000031740f00000070726f74636f6c5f76657273696f6e74040000006e
*616d65740700000076657273696f6e7407000000636f6e74656e74740800000066696c65747970
*655228000000740a0000006d64355f646967657374740900000062646973745f72706d730f0000
*006275696c7420666f72202573202573740a00000062646973745f64756d62730c000000627569
*6c7420666f722025737407000000636f6d6d656e7473040000002e617363740d0000006770675f
*7369676e6174757265730600000042617369632074010000003a73330000002d2d2d2d2d2d2d2d
*2d2d2d2d2d2d4748534b464a444c47445337353433464a4b4c4648524537353634323735363734
*3332353473030000000a2d2d73020000002d2d730e0000003b66696c656e616d653d2225732269
*00000000732a0000000a436f6e74656e742d446973706f736974696f6e3a20666f726d2d646174
*613b206e616d653d2225732273020000000a0a69ffffffff73010000000d73010000000a731300
*00005375626d697474696e6720257320746f202573740400000068747470740500000068747470
*737313000000756e737570706f7274656420736368656d61207404000000504f5354730c000000
*436f6e74656e742d7479706573200000006d756c7469706172742f666f726d2d646174613b2062
*6f756e646172793d2573730e000000436f6e74656e742d6c656e677468740d000000417574686f
*72697a6174696f6e69c8000000731800000053657276657220726573706f6e736520282573293a
*202573731600000055706c6f6164206661696c656420282573293a20257374010000002d694b00
*00002833000000520700000052110000005202000000522c00000074040000006f70656e521e00
*0000521600000052190000007408000000626173656e616d655224000000740f0000006861735f
*6578745f6d6f64756c65737408000000706c6174666f726d74080000006765745f6e616d65740b
*0000006765745f76657273696f6e52040000007409000000686578646967657374740400000064
*6973747406000000626173653634740c000000656e636f6465737472696e67520b000000520c00
*0000740500000073747269707408000000537472696e67494f74050000006974656d7374040000
*007479706574050000007475706c65740300000073747274050000007772697465740800000067
*657476616c7565521c000000520d00000052030000007404000000494e464f740800000075726c
*7061727365740e000000417373657274696f6e4572726f727407000000687474706c6962740e00
*000048545450436f6e6e656374696f6e740f0000004854545053436f6e6e656374696f6e740700
*0000636f6e6e656374740a00000070757472657175657374740900000070757468656164657274
*030000006c656e740a000000656e6468656164657273740400000073656e647406000000736f63
*6b657474050000006572726f7274050000004552524f52740b000000676574726573706f6e7365
*74060000007374617475737406000000726561736f6e520e000000281e00000052120000005227
*0000005228000000522900000074080000006770675f6172677352350000005243000000523a00
*000074040000006461746152490000005234000000740200000069647404000000617574687408
*000000626f756e64617279740c0000007365705f626f756e64617279740c000000656e645f626f
*756e646172797404000000626f647974030000006b6579740500000076616c7565740200000066
*6e7406000000736368656d6174060000006e65746c6f63740300000075726c7406000000706172
*616d73740500000071756572797409000000667261676d656e7473523d00000074080000006c6f
*676c6576656c74010000006552060000002800000000280000000073320000006275696c645c62
*646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e645c75706c6f61
*642e707952260000004c00000073ac00000000020a0112010a011a0109010e031501120106011d
*011a01030107010701100110010d010701070116020d011501070118010d011a010a020a011301
*2103270306010a010a010c010d000c0219010d010700060113010e010e0206010c010d0111010d
*010d010d01180119010d010d010c02200624011f010d0113010d0113020d020601090103010a01
*100109010b011c0110010a0111011301190106020c01100119010e0219010a010a014e28030000
*00730d00000073686f772d726573706f6e73654e7326000000646973706c61792066756c6c2072
*6573706f6e736520746578742066726f6d20736572766572280300000073040000007369676e52
*08000000731e0000007369676e2066696c657320746f2075706c6f6164207573696e6720677067
*280300000073090000006964656e746974793d5209000000731f000000475047206964656e7469
*7479207573656420746f207369676e2066696c6573280b00000074080000005f5f6e616d655f5f
*740a0000005f5f6d6f64756c655f5f740b0000006465736372697074696f6e5220000000521000
*0000740c000000757365725f6f7074696f6e73740f000000626f6f6c65616e5f6f7074696f6e73
*52130000005223000000522a000000522600000028000000002800000000280000000073320000
*006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d61
*6e645c75706c6f61642e7079520500000016000000731c00000006020602060306010a01000103
*010001030109020c02090809170906281500000074070000005f5f646f635f5f74100000006469
*73747574696c732e6572726f7273740e000000646973747574696c732e636f7265520100000074
*0f000000646973747574696c732e737061776e52020000007409000000646973747574696c7352
*030000007407000000686173686c69625204000000740b000000496d706f72744572726f725216
*00000052600000005245000000521d0000005257000000524a0000005255000000740900000063
*537472696e67494f524d0000005205000000280000000028000000002800000000733200000062
*75696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c636f6d6d616e64
*5c75706c6f61642e707974080000003c6d6f64756c653e03000000732200000006020a01100110
*011001030114010e0115010c010c010c010c010c010c010c010c02
addfile ./setuptools-0.6c14devdev.egg/setuptools/depends.py
hunk ./setuptools-0.6c14devdev.egg/setuptools/depends.py 1
+from __future__ import generators
+import sys, imp, marshal
+from imp import PKG_DIRECTORY, PY_COMPILED, PY_SOURCE, PY_FROZEN
+from distutils.version import StrictVersion, LooseVersion
+
+__all__ = [
+    'Require', 'find_module', 'get_module_constant', 'extract_constant'
+]
+
+class Require:
+    """A prerequisite to building or installing a distribution"""
+
+    def __init__(self,name,requested_version,module,homepage='',
+        attribute=None,format=None
+    ):
+
+        if format is None and requested_version is not None:
+            format = StrictVersion
+
+        if format is not None:
+            requested_version = format(requested_version)
+            if attribute is None:
+                attribute = '__version__'
+
+        self.__dict__.update(locals())
+        del self.self
+
+
+    def full_name(self):
+        """Return full package/distribution name, w/version"""
+        if self.requested_version is not None:
+            return '%s-%s' % (self.name,self.requested_version)
+        return self.name
+
+
+    def version_ok(self,version):
+        """Is 'version' sufficiently up-to-date?"""
+        return self.attribute is None or self.format is None or \
+            str(version)<>"unknown" and version >= self.requested_version
+
+
+    def get_version(self, paths=None, default="unknown"):
+
+        """Get version number of installed module, 'None', or 'default'
+
+        Search 'paths' for module.  If not found, return 'None'.  If found,
+        return the extracted version attribute, or 'default' if no version
+        attribute was specified, or the value cannot be determined without
+        importing the module.  The version is formatted according to the
+        requirement's version format (if any), unless it is 'None' or the
+        supplied 'default'.
+        """
+
+        if self.attribute is None:
+            try:
+                f,p,i = find_module(self.module,paths)
+                if f: f.close()
+                return default
+            except ImportError:
+                return None
+
+        v = get_module_constant(self.module,self.attribute,default,paths)
+
+        if v is not None and v is not default and self.format is not None:
+            return self.format(v)
+
+        return v
+
+
+    def is_present(self,paths=None):
+        """Return true if dependency is present on 'paths'"""
+        return self.get_version(paths) is not None
+
+
+    def is_current(self,paths=None):
+        """Return true if dependency is present and up-to-date on 'paths'"""
+        version = self.get_version(paths)
+        if version is None:
+            return False
+        return self.version_ok(version)
+
+
+def _iter_code(code):
+
+    """Yield '(op,arg)' pair for each operation in code object 'code'"""
+
+    from array import array
+    from dis import HAVE_ARGUMENT, EXTENDED_ARG
+
+    bytes = array('b',code.co_code)
+    eof = len(code.co_code)
+
+    ptr = 0
+    extended_arg = 0
+
+    while ptr<eof:
+
+        op = bytes[ptr]
+
+        if op>=HAVE_ARGUMENT:
+
+            arg = bytes[ptr+1] + bytes[ptr+2]*256 + extended_arg
+            ptr += 3
+
+            if op==EXTENDED_ARG:
+                extended_arg = arg * 65536L
+                continue
+
+        else:
+            arg = None
+            ptr += 1
+
+        yield op,arg
+
+
+
+
+
+
+
+
+
+
+def find_module(module, paths=None):
+    """Just like 'imp.find_module()', but with package support"""
+
+    parts = module.split('.')
+
+    while parts:
+        part = parts.pop(0)
+        f, path, (suffix,mode,kind) = info = imp.find_module(part, paths)
+
+        if kind==PKG_DIRECTORY:
+            parts = parts or ['__init__']
+            paths = [path]
+
+        elif parts:
+            raise ImportError("Can't find %r in %s" % (parts,module))
+
+    return info
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+def get_module_constant(module, symbol, default=-1, paths=None):
+
+    """Find 'module' by searching 'paths', and extract 'symbol'
+
+    Return 'None' if 'module' does not exist on 'paths', or it does not define
+    'symbol'.  If the module defines 'symbol' as a constant, return the
+    constant.  Otherwise, return 'default'."""
+
+    try:
+        f, path, (suffix,mode,kind) = find_module(module,paths)
+    except ImportError:
+        # Module doesn't exist
+        return None
+
+    try:
+        if kind==PY_COMPILED:
+            f.read(8)   # skip magic & date
+            code = marshal.load(f)
+        elif kind==PY_FROZEN:
+            code = imp.get_frozen_object(module)
+        elif kind==PY_SOURCE:
+            code = compile(f.read(), path, 'exec')
+        else:
+            # Not something we can parse; we'll have to import it.  :(
+            if module not in sys.modules:
+                imp.load_module(module,f,path,(suffix,mode,kind))
+            return getattr(sys.modules[module],symbol,None)
+
+    finally:
+        if f:
+            f.close()
+
+    return extract_constant(code,symbol,default)
+
+
+
+
+
+
+
+
+def extract_constant(code,symbol,default=-1):
+    """Extract the constant value of 'symbol' from 'code'
+
+    If the name 'symbol' is bound to a constant value by the Python code
+    object 'code', return that value.  If 'symbol' is bound to an expression,
+    return 'default'.  Otherwise, return 'None'.
+
+    Return value is based on the first assignment to 'symbol'.  'symbol' must
+    be a global, or at least a non-"fast" local in the code block.  That is,
+    only 'STORE_NAME' and 'STORE_GLOBAL' opcodes are checked, and 'symbol'
+    must be present in 'code.co_names'.
+    """
+
+    if symbol not in code.co_names:
+        # name's not there, can't possibly be an assigment
+        return None
+
+    name_idx = list(code.co_names).index(symbol)
+
+    STORE_NAME = 90
+    STORE_GLOBAL = 97
+    LOAD_CONST = 100
+
+    const = default
+
+    for op, arg in _iter_code(code):
+
+        if op==LOAD_CONST:
+            const = code.co_consts[arg]
+        elif arg==name_idx and (op==STORE_NAME or op==STORE_GLOBAL):
+            return const
+        else:
+            const = default
+            
+if sys.platform.startswith('java') or sys.platform == 'cli':
+    # XXX it'd be better to test assertions about bytecode instead...
+    del extract_constant, get_module_constant
+    __all__.remove('extract_constant')
+    __all__.remove('get_module_constant')
+
+
addfile ./setuptools-0.6c14devdev.egg/setuptools/depends.pyc
binary ./setuptools-0.6c14devdev.egg/setuptools/depends.pyc
oldhex
*
newhex
*d1f20d0a481ef84b6300000000000000000a00000040000000730c0100006400006401006b0000
*6c01005a0100016400006402006b02005a02006400006402006b03005a03006400006402006b04
*005a04006400006403006b03006c05005a05006c06005a06006c07005a07006c08005a08000164
*00006404006b09006c0a005a0a006c0b005a0b00016405006406006407006408006704005a0c00
*640500641000640900840000830000595a0d00640a008400005a0e00640200640b008401005a10
*00640000640200640c008402005a1100640000640d008401005a1200650200691300691400640e
*0083010070100001650200691300640f006a02006f2400015b12005b1100650c00691500640800
*83010001650c00691500640700830100016e01000164020053281100000069ffffffff28010000
*00740a00000067656e657261746f72734e2804000000740d000000504b475f4449524543544f52
*59740b00000050595f434f4d50494c4544740900000050595f534f55524345740900000050595f
*46524f5a454e2802000000740d00000053747269637456657273696f6e740c0000004c6f6f7365
*56657273696f6e740700000052657175697265740b00000066696e645f6d6f64756c6574130000
*006765745f6d6f64756c655f636f6e7374616e747410000000657874726163745f636f6e737461
*6e74630000000000000000040000004200000073590000006500005a01006400005a0200640100
*6409006409006402008403005a04006403008400005a05006404008400005a0600640900640500
*6406008402005a07006409006407008401005a08006409006408008401005a09005253280a0000
*007337000000412070726572657175697369746520746f206275696c64696e67206f7220696e73
*74616c6c696e67206120646973747269627574696f6e7400000000630700000007000000020000
*004300000073750000007c06006400006a08006f1700017c02006400006a09006f0a0001740100
*7d06006e0100017c06006400006a09006f2700017c06007c02008301007d02007c05006400006a
*08006f0a00016401007d0500715800016e0100017c000069020069030074040083000083010001
*7c00006005006400005328020000004e740b0000005f5f76657273696f6e5f5f28060000007404
*0000004e6f6e65520500000074080000005f5f646963745f5f7406000000757064617465740600
*00006c6f63616c73740400000073656c662807000000521100000074040000006e616d65741100
*00007265717565737465645f76657273696f6e74060000006d6f64756c657408000000686f6d65
*7061676574090000006174747269627574657406000000666f726d617428000000002800000000
*733f000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36633134646576
*6465762e6567675c7365747570746f6f6c735c646570656e64732e707974080000005f5f696e69
*745f5f0d000000731000000000041a010a020d010c010d010e0213016301000000010000000300
*000043000000732c0000007c00006900006402006a09006f1500016401007c00006902007c0000
*6900006602001653017c0000690200532803000000733000000052657475726e2066756c6c2070
*61636b6167652f646973747269627574696f6e206e616d652c20772f76657273696f6e73050000
*0025732d25734e28030000005213000000520d0000005212000000280100000052110000002800
*0000002800000000733f000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d30
*2e366331346465766465762e6567675c7365747570746f6f6c735c646570656e64732e70797409
*00000066756c6c5f6e616d651d0000007306000000000210011501630200000002000000020000
*004300000073400000007c00006900006402006a0800703000017c00006902006402006a080070
*2000017403007c01008301006401006a03006f0d00017c01007c00006904006a05005328030000
*0073250000004973202776657273696f6e272073756666696369656e746c792075702d746f2d64
*6174653f7407000000756e6b6e6f776e4e28050000005216000000520d00000052170000007403
*000000737472521300000028020000005211000000740700000076657273696f6e280000000028
*00000000733f000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331
*346465766465762e6567675c7365747570746f6f6c735c646570656e64732e7079740a00000076
*657273696f6e5f6f6b24000000730400000000022001521a000000630300000007000000080000
*004300000073ba0000007c00006900006401006a08006f5300017938007402007c00006903007c
*01008302005c03007d03007d04007d05007c03006f0e00017c0300690400830000016e0100017c
*02005357716300047405006a0a006f0800010101016401005301586e0100017406007c00006903
*007c00006900007c02007c01008304007d06007c06006401006a09006f2b00017c06007c02006a
*09006f1e00017c00006907006401006a09006f0e00017c00006907007c060083010053017c0600
*53280200000073d70100004765742076657273696f6e206e756d626572206f6620696e7374616c
*6c6564206d6f64756c652c20274e6f6e65272c206f72202764656661756c74270a0a2020202020
*202020536561726368202770617468732720666f72206d6f64756c652e20204966206e6f742066
*6f756e642c2072657475726e20274e6f6e65272e2020496620666f756e642c0a20202020202020
*2072657475726e20746865206578747261637465642076657273696f6e20617474726962757465
*2c206f72202764656661756c7427206966206e6f2076657273696f6e0a20202020202020206174
*7472696275746520776173207370656369666965642c206f72207468652076616c75652063616e
*6e6f742062652064657465726d696e656420776974686f75740a2020202020202020696d706f72
*74696e6720746865206d6f64756c652e20205468652076657273696f6e20697320666f726d6174
*746564206163636f7264696e6720746f207468650a2020202020202020726571756972656d656e
*7427732076657273696f6e20666f726d61742028696620616e79292c20756e6c65737320697420
*697320274e6f6e6527206f72207468650a2020202020202020737570706c696564202764656661
*756c74272e0a20202020202020204e28080000005216000000520d000000520800000052140000
*007405000000636c6f7365740b000000496d706f72744572726f72520900000052170000002807
*000000521100000074050000007061746873740700000064656661756c74740100000066740100
*00007074010000006974010000007628000000002800000000733f000000433a5c7461686f652d
*6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c736574757074
*6f6f6c735c646570656e64732e7079740b0000006765745f76657273696f6e2a00000073180000
*00000c100103011b0107000e0108010e010a021b022a010e026302000000020000000200000043
*00000073130000007c00006900007c01008301006401006a0900532802000000732f0000005265
*7475726e207472756520696620646570656e64656e63792069732070726573656e74206f6e2027
*7061746873274e28020000005226000000520d0000002802000000521100000052200000002800
*0000002800000000733f000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d30
*2e366331346465766465762e6567675c7365747570746f6f6c735c646570656e64732e7079740a
*00000069735f70726573656e744600000073020000000002630200000003000000020000004300
*0000732e0000007c00006900007c01008301007d02007c02006401006a08006f05000174020053
*017c00006903007c0200830100532802000000733e00000052657475726e207472756520696620
*646570656e64656e63792069732070726573656e7420616e642075702d746f2d64617465206f6e
*20277061746873274e28040000005226000000520d000000740500000046616c7365521d000000
*280300000052110000005220000000521c00000028000000002800000000733f000000433a5c74
*61686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c73
*65747570746f6f6c735c646570656e64732e7079740a00000069735f63757272656e744b000000
*730800000000020f010d0105014e280a00000074080000005f5f6e616d655f5f740a0000005f5f
*6d6f64756c655f5f74070000005f5f646f635f5f520d00000052180000005219000000521d0000
*00522600000052270000005229000000280000000028000000002800000000733f000000433a5c
*7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c
*7365747570746f6f6c735c646570656e64732e707952070000000a000000731000000006010602
*03010f0f090709060f1c0c0563010000000a000000060000006300000073ec0000006401006402
*006b00006c00007d0100016401006403006b01006c02007d02006c03007d0300017c0100640400
*7c00006904008302007d04007405007c00006904008301007d05006405007d06006405007d0700
*7892007c06007c05006a00006f8400017c04007c0600197d08007c08007c02006a05006f4e0001
*7c04007c060064060017197c04007c0600640700171964080014177c0700177d09007c06006409
*00377d06007c08007c03006a02006f1100017c0900640a00147d070071560071d800016e110001
*640b007d09007c0600640600377d06007c08007c090066020056017156000157640b0053280c00
*0000733e0000005969656c642027286f702c6172672927207061697220666f722065616368206f
*7065726174696f6e20696e20636f6465206f626a6563742027636f64652769ffffffff28010000
*00740500000061727261792802000000740d000000484156455f415247554d454e54740c000000
*455854454e4445445f415247740100000062690000000069010000006902000000690001000069
*030000006c02000000000002004e2807000000522d0000007403000000646973522e000000522f
*0000007407000000636f5f636f646574030000006c656e520d000000280a000000740400000063
*6f6465522d000000522e000000522f000000740500000062797465737403000000656f66740300
*0000707472740c000000657874656e6465645f61726774020000006f7074030000006172672800
*0000002800000000733f000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d30
*2e366331346465766465762e6567675c7365747570746f6f6c735c646570656e64732e7079740a
*0000005f697465725f636f646553000000732400000000041001160212010f020601060203000d
*020a020d0222010a020d010a010b0306010a0263020000000a000000040000004300000073a400
*00007c00006900006401008301007d0200788e007c02006f8600017c0200690100640200830100
*7d03007402006903007c03007c0100830200045c03007d04007d05005c03007d06007d07007d08
*007d09007c08007404006a02006f1d00017c0200700700016403006701007d02007c0500670100
*7d0100711200017c02006f1a00017405006404007c02007c000066020016830100820100711200
*0171120001577c090053280500000073370000004a757374206c696b652027696d702e66696e64
*5f6d6f64756c652829272c206275742077697468207061636b61676520737570706f7274740100
*00002e69000000005218000000731300000043616e27742066696e6420257220696e2025732806
*000000740500000073706c69747403000000706f707403000000696d7052080000005201000000
*521f000000280a0000005214000000522000000074050000007061727473740400000070617274
*5222000000740400000070617468740600000073756666697874040000006d6f64657404000000
*6b696e647404000000696e666f28000000002800000000733f000000433a5c7461686f652d6c61
*66735c7365747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f
*6c735c646570656e64732e707952080000007c000000731600000000030f02030007010f012802
*0d0110010d0207011f0263040000000a0000000d0000004300000073290100007925007400007c
*00007c03008302005c03007d04007d05005c03007d06007d07007d0800576e1400047401006a0a
*006f0800010101016403005301587ac4007c08007403006a02006f2000017c0400690400640100
*830100017405006906007c04008301007d09006e9400017c08007407006a02006f130001740800
*6909007c00008301007d09006e7400017c0800740a006a02006f1c0001740b007c040069040083
*00007c05006402008303007d09006e4b00017c0000740c00690d006a07006f230001740800690e
*007c00007c04007c05007c06007c07007c0800660300830400016e010001740f00740c00690d00
*7c0000197c010064030083030053576403007c04006f0e00017c0400691000830000016e010001
*587411007c09007c01007c020083030053280400000073fc00000046696e6420276d6f64756c65
*2720627920736561726368696e6720277061746873272c20616e64206578747261637420277379
*6d626f6c270a0a2020202052657475726e20274e6f6e652720696620276d6f64756c652720646f
*6573206e6f74206578697374206f6e20277061746873272c206f7220697420646f6573206e6f74
*20646566696e650a202020202773796d626f6c272e2020496620746865206d6f64756c65206465
*66696e6573202773796d626f6c27206173206120636f6e7374616e742c2072657475726e207468
*650a20202020636f6e7374616e742e20204f74686572776973652c2072657475726e2027646566
*61756c74272e69080000007404000000657865634e28120000005208000000521f000000520d00
*0000520200000074040000007265616474070000006d61727368616c74040000006c6f61645204
*000000523f00000074110000006765745f66726f7a656e5f6f626a656374520300000074070000
*00636f6d70696c65740300000073797374070000006d6f64756c6573740b0000006c6f61645f6d
*6f64756c65740700000067657461747472521e000000520a000000280a00000052140000007406
*00000073796d626f6c522100000052200000005222000000524200000052430000005244000000
*5245000000523400000028000000002800000000733f000000433a5c7461686f652d6c6166735c
*7365747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c
*646570656e64732e70795209000000a500000073240000000008030125010e02060203010d010d
*0113010d0113010d011c03100123011b0307010f0263030000000a000000030000004300000073
*b60000007c01007c00006900006a07006f05000164040053017402007c00006900008301006903
*007c01008301007d03006401007d04006402007d05006403007d06007c02007d0700786a007404
*007c0000830100445d5c005c02007d08007d09007c08007c06006a02006f1100017c0000690500
*7c0900197d0700715200017c09007c03006a02006f1f00017c08007c04006a0200700d00017c08
*007c05006a02006f0500017c070053017c02007d070071520057640400532805000000730f0200
*00457874726163742074686520636f6e7374616e742076616c7565206f66202773796d626f6c27
*2066726f6d2027636f6465270a0a20202020496620746865206e616d65202773796d626f6c2720
*697320626f756e6420746f206120636f6e7374616e742076616c75652062792074686520507974
*686f6e20636f64650a202020206f626a6563742027636f6465272c2072657475726e2074686174
*2076616c75652e20204966202773796d626f6c2720697320626f756e6420746f20616e20657870
*72657373696f6e2c0a2020202072657475726e202764656661756c74272e20204f746865727769
*73652c2072657475726e20274e6f6e65272e0a0a2020202052657475726e2076616c7565206973
*206261736564206f6e207468652066697273742061737369676e6d656e7420746f202773796d62
*6f6c272e20202773796d626f6c27206d7573740a202020206265206120676c6f62616c2c206f72
*206174206c656173742061206e6f6e2d226661737422206c6f63616c20696e2074686520636f64
*6520626c6f636b2e2020546861742069732c0a202020206f6e6c79202753544f52455f4e414d45
*2720616e64202753544f52455f474c4f42414c27206f70636f6465732061726520636865636b65
*642c20616e64202773796d626f6c270a202020206d7573742062652070726573656e7420696e20
*27636f64652e636f5f6e616d6573272e0a20202020695a000000696100000069640000004e2806
*0000007408000000636f5f6e616d6573520d00000074040000006c6973747405000000696e6465
*78523b0000007409000000636f5f636f6e737473280a0000005234000000525100000052210000
*0074080000006e616d655f696478740a00000053544f52455f4e414d45740c00000053544f5245
*5f474c4f42414c740a0000004c4f41445f434f4e53547405000000636f6e73745239000000523a
*00000028000000002800000000733f000000433a5c7461686f652d6c6166735c7365747570746f
*6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c646570656e6473
*2e7079520a000000ce000000731c000000000d10020502180206010601060206020d000c020d01
*11012701050274040000006a6176617403000000636c6928000000002816000000740a0000005f
*5f6675747572655f5f5200000000524d000000523f000000524900000052010000005202000000
*520300000052040000007411000000646973747574696c732e76657273696f6e52050000005206
*00000074070000005f5f616c6c5f5f5207000000523b000000520d000000520800000052090000
*00520a0000007408000000706c6174666f726d740a000000737461727473776974687406000000
*72656d6f7665280000000028000000002800000000733f000000433a5c7461686f652d6c616673
*5c7365747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c73
*5c646570656e64732e707974080000003c6d6f64756c653e01000000731a000000100124012201
*16031203134909290c290f290c22230206010d01
addfile ./setuptools-0.6c14devdev.egg/setuptools/dist.py
hunk ./setuptools-0.6c14devdev.egg/setuptools/dist.py 1
+__all__ = ['Distribution']
+
+from distutils.core import Distribution as _Distribution
+from setuptools.depends import Require
+from setuptools.command.install import install
+from setuptools.command.sdist import sdist
+from setuptools.command.install_lib import install_lib
+from distutils.errors import DistutilsOptionError, DistutilsPlatformError
+from distutils.errors import DistutilsSetupError
+import setuptools, pkg_resources, distutils.core, distutils.dist, distutils.cmd
+import os, distutils.log
+
+def _get_unpatched(cls):
+    """Protect against re-patching the distutils if reloaded
+
+    Also ensures that no other distutils extension monkeypatched the distutils
+    first.
+    """
+    while cls.__module__.startswith('setuptools'):
+        cls, = cls.__bases__
+    if not cls.__module__.startswith('distutils'):
+        raise AssertionError(
+            "distutils has already been patched by %r" % cls
+        )
+    return cls
+
+_Distribution = _get_unpatched(_Distribution)
+
+sequence = tuple, list
+
+def check_importable(dist, attr, value):
+    try:
+        ep = pkg_resources.EntryPoint.parse('x='+value)
+        assert not ep.extras
+    except (TypeError,ValueError,AttributeError,AssertionError):
+        raise DistutilsSetupError(
+            "%r must be importable 'module:attrs' string (got %r)"
+            % (attr,value)
+        )
+
+
+def assert_string_list(dist, attr, value):
+    """Verify that value is a string list or None"""
+    try:
+        assert ''.join(value)!=value
+    except (TypeError,ValueError,AttributeError,AssertionError):
+        raise DistutilsSetupError(
+            "%r must be a list of strings (got %r)" % (attr,value)
+        )
+
+def check_nsp(dist, attr, value):
+    """Verify that namespace packages are valid"""
+    assert_string_list(dist,attr,value)
+    for nsp in value:
+        if not dist.has_contents_for(nsp):
+            raise DistutilsSetupError(
+                "Distribution contains no modules or packages for " +
+                "namespace package %r" % nsp
+            )
+        if '.' in nsp:
+            parent = '.'.join(nsp.split('.')[:-1])
+            if parent not in value:
+                distutils.log.warn(
+                    "%r is declared as a package namespace, but %r is not:"
+                    " please correct this in setup.py", nsp, parent
+                )
+
+def check_extras(dist, attr, value):
+    """Verify that extras_require mapping is valid"""
+    try:
+        for k,v in value.items():
+            list(pkg_resources.parse_requirements(v))
+    except (TypeError,ValueError,AttributeError):
+        raise DistutilsSetupError(
+            "'extras_require' must be a dictionary whose values are "
+            "strings or lists of strings containing valid project/version "
+            "requirement specifiers."
+        )
+
+
+
+
+def assert_bool(dist, attr, value):
+    """Verify that value is True, False, 0, or 1"""
+    if bool(value) != value:
+        raise DistutilsSetupError(
+            "%r must be a boolean value (got %r)" % (attr,value)
+        )
+def check_requirements(dist, attr, value):
+    """Verify that install_requires is a valid requirements list"""
+    try:
+        list(pkg_resources.parse_requirements(value))
+    except (TypeError,ValueError):
+        raise DistutilsSetupError(
+            "%r must be a string or list of strings "
+            "containing valid project/version requirement specifiers" % (attr,)
+        )
+def check_entry_points(dist, attr, value):
+    """Verify that entry_points map is parseable"""
+    try:
+        pkg_resources.EntryPoint.parse_map(value)
+    except ValueError, e:
+        raise DistutilsSetupError(e)
+
+def check_test_suite(dist, attr, value):
+    if not isinstance(value,basestring):
+        raise DistutilsSetupError("test_suite must be a string")
+
+def check_package_data(dist, attr, value):
+    """Verify that value is a dictionary of package names to glob lists"""
+    if isinstance(value,dict):
+        for k,v in value.items():
+            if not isinstance(k,str): break
+            try: iter(v)
+            except TypeError:
+                break
+        else:
+            return
+    raise DistutilsSetupError(
+        attr+" must be a dictionary mapping package names to lists of "
+        "wildcard patterns"
+    )
+
+class Distribution(_Distribution):
+    """Distribution with support for features, tests, and package data
+
+    This is an enhanced version of 'distutils.dist.Distribution' that
+    effectively adds the following new optional keyword arguments to 'setup()':
+
+     'install_requires' -- a string or sequence of strings specifying project
+        versions that the distribution requires when installed, in the format
+        used by 'pkg_resources.require()'.  They will be installed
+        automatically when the package is installed.  If you wish to use
+        packages that are not available in PyPI, or want to give your users an
+        alternate download location, you can add a 'find_links' option to the
+        '[easy_install]' section of your project's 'setup.cfg' file, and then
+        setuptools will scan the listed web pages for links that satisfy the
+        requirements.
+
+     'extras_require' -- a dictionary mapping names of optional "extras" to the
+        additional requirement(s) that using those extras incurs. For example,
+        this::
+
+            extras_require = dict(reST = ["docutils>=0.3", "reSTedit"])
+
+        indicates that the distribution can optionally provide an extra
+        capability called "reST", but it can only be used if docutils and
+        reSTedit are installed.  If the user installs your package using
+        EasyInstall and requests one of your extras, the corresponding
+        additional requirements will be installed if needed.
+
+     'features' -- a dictionary mapping option names to 'setuptools.Feature'
+        objects.  Features are a portion of the distribution that can be
+        included or excluded based on user options, inter-feature dependencies,
+        and availability on the current system.  Excluded features are omitted
+        from all setup commands, including source and binary distributions, so
+        you can create multiple distributions from the same source tree.
+        Feature names should be valid Python identifiers, except that they may
+        contain the '-' (minus) sign.  Features can be included or excluded
+        via the command line options '--with-X' and '--without-X', where 'X' is
+        the name of the feature.  Whether a feature is included by default, and
+        whether you are allowed to control this from the command line, is
+        determined by the Feature object.  See the 'Feature' class for more
+        information.
+
+     'test_suite' -- the name of a test suite to run for the 'test' command.
+        If the user runs 'python setup.py test', the package will be installed,
+        and the named test suite will be run.  The format is the same as
+        would be used on a 'unittest.py' command line.  That is, it is the
+        dotted name of an object to import and call to generate a test suite.
+
+     'package_data' -- a dictionary mapping package names to lists of filenames
+        or globs to use to find data files contained in the named packages.
+        If the dictionary has filenames or globs listed under '""' (the empty
+        string), those names will be searched for in every package, in addition
+        to any names for the specific package.  Data files found using these
+        names/globs will be installed along with the package, in the same
+        location as the package.  Note that globs are allowed to reference
+        the contents of non-package subdirectories, as long as you use '/' as
+        a path separator.  (Globs are automatically converted to
+        platform-specific paths at runtime.)
+
+    In addition to these new keywords, this class also has several new methods
+    for manipulating the distribution's contents.  For example, the 'include()'
+    and 'exclude()' methods can be thought of as in-place add and subtract
+    commands that add or remove packages, modules, extensions, and so on from
+    the distribution.  They are used by the feature subsystem to configure the
+    distribution for the included and excluded features.
+    """
+
+    _patched_dist = None
+
+    def patch_missing_pkg_info(self, attrs):
+        # Fake up a replacement for the data that would normally come from
+        # PKG-INFO, but which might not yet be built if this is a fresh
+        # checkout.
+        #
+        if not attrs or 'name' not in attrs or 'version' not in attrs:
+            return
+        key = pkg_resources.safe_name(str(attrs['name'])).lower()
+        dist = pkg_resources.working_set.by_key.get(key)
+        if dist is not None and not dist.has_metadata('PKG-INFO'):
+            dist._version = pkg_resources.safe_version(str(attrs['version']))
+            self._patched_dist = dist
+
+    def __init__ (self, attrs=None):
+        have_package_data = hasattr(self, "package_data")
+        if not have_package_data:
+            self.package_data = {}
+        self.require_features = []
+        self.features = {}
+        self.dist_files = []
+        self.patch_missing_pkg_info(attrs)
+        # Make sure we have any eggs needed to interpret 'attrs'
+        if attrs is not None:
+            self.dependency_links = attrs.pop('dependency_links', [])
+            assert_string_list(self,'dependency_links',self.dependency_links)
+        if attrs and 'setup_requires' in attrs:
+            self.fetch_build_eggs(attrs.pop('setup_requires'))
+        for ep in pkg_resources.iter_entry_points('distutils.setup_keywords'):
+            if not hasattr(self,ep.name):
+                setattr(self,ep.name,None)
+        _Distribution.__init__(self,attrs)
+        if isinstance(self.metadata.version, (int,long,float)):
+            # Some people apparently take "version number" too literally :)
+            self.metadata.version = str(self.metadata.version)
+
+    def parse_command_line(self):
+        """Process features after parsing command line options"""
+        result = _Distribution.parse_command_line(self)
+        if self.features:
+            self._finalize_features()
+        return result
+
+    def _feature_attrname(self,name):
+        """Convert feature name to corresponding option attribute name"""
+        return 'with_'+name.replace('-','_')
+
+    def fetch_build_eggs(self, requires):
+        """Resolve pre-setup requirements"""
+        from pkg_resources import working_set, parse_requirements
+        for dist in working_set.resolve(
+            parse_requirements(requires), installer=self.fetch_build_egg
+        ):
+            working_set.add(dist)
+
+    def finalize_options(self):
+        _Distribution.finalize_options(self)
+        if self.features:
+            self._set_global_opts_from_features()
+
+        for ep in pkg_resources.iter_entry_points('distutils.setup_keywords'):
+            value = getattr(self,ep.name,None)
+            if value is not None:
+                ep.require(installer=self.fetch_build_egg)
+                ep.load()(self, ep.name, value)
+
+    def fetch_build_egg(self, req):
+        """Fetch an egg needed for building"""
+        try:
+            cmd = self._egg_fetcher
+        except AttributeError:
+            from setuptools.command.easy_install import easy_install
+            dist = self.__class__({'script_args':['easy_install']})
+            dist.parse_config_files()
+            opts = dist.get_option_dict('easy_install')
+            keep = (
+                'find_links', 'site_dirs', 'index_url', 'optimize',
+                'site_dirs', 'allow_hosts'
+            )
+            for key in opts.keys():
+                if key not in keep:
+                    del opts[key]   # don't use any other settings
+            if self.dependency_links:
+                links = self.dependency_links[:]
+                if 'find_links' in opts:
+                    links = opts['find_links'][1].split() + links
+                opts['find_links'] = ('setup', links)
+            cmd = easy_install(
+                dist, args=["x"], install_dir=os.curdir, exclude_scripts=True,
+                always_copy=False, build_directory=None, editable=False,
+                upgrade=False, multi_version=True, no_report = True
+            )
+            cmd.ensure_finalized()
+            self._egg_fetcher = cmd
+        return cmd.easy_install(req)
+
+    def _set_global_opts_from_features(self):
+        """Add --with-X/--without-X options based on optional features"""
+
+        go = []
+        no = self.negative_opt.copy()
+
+        for name,feature in self.features.items():
+            self._set_feature(name,None)
+            feature.validate(self)
+
+            if feature.optional:
+                descr = feature.description
+                incdef = ' (default)'
+                excdef=''
+                if not feature.include_by_default():
+                    excdef, incdef = incdef, excdef
+
+                go.append(('with-'+name, None, 'include '+descr+incdef))
+                go.append(('without-'+name, None, 'exclude '+descr+excdef))
+                no['without-'+name] = 'with-'+name
+
+        self.global_options = self.feature_options = go + self.global_options
+        self.negative_opt = self.feature_negopt = no
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    def _finalize_features(self):
+        """Add/remove features and resolve dependencies between them"""
+
+        # First, flag all the enabled items (and thus their dependencies)
+        for name,feature in self.features.items():
+            enabled = self.feature_is_included(name)
+            if enabled or (enabled is None and feature.include_by_default()):
+                feature.include_in(self)
+                self._set_feature(name,1)
+
+        # Then disable the rest, so that off-by-default features don't
+        # get flagged as errors when they're required by an enabled feature
+        for name,feature in self.features.items():
+            if not self.feature_is_included(name):
+                feature.exclude_from(self)
+                self._set_feature(name,0)
+
+
+    def get_command_class(self, command):
+        """Pluggable version of get_command_class()"""
+        if command in self.cmdclass:
+            return self.cmdclass[command]
+
+        for ep in pkg_resources.iter_entry_points('distutils.commands',command):
+            ep.require(installer=self.fetch_build_egg)
+            self.cmdclass[command] = cmdclass = ep.load()
+            return cmdclass
+        else:
+            return _Distribution.get_command_class(self, command)
+
+    def print_commands(self):
+        for ep in pkg_resources.iter_entry_points('distutils.commands'):
+            if ep.name not in self.cmdclass:
+                cmdclass = ep.load(False) # don't require extras, we're not running
+                self.cmdclass[ep.name] = cmdclass
+        return _Distribution.print_commands(self)
+
+
+
+
+
+    def _set_feature(self,name,status):
+        """Set feature's inclusion status"""
+        setattr(self,self._feature_attrname(name),status)
+
+    def feature_is_included(self,name):
+        """Return 1 if feature is included, 0 if excluded, 'None' if unknown"""
+        return getattr(self,self._feature_attrname(name))
+
+    def include_feature(self,name):
+        """Request inclusion of feature named 'name'"""
+
+        if self.feature_is_included(name)==0:
+            descr = self.features[name].description
+            raise DistutilsOptionError(
+               descr + " is required, but was excluded or is not available"
+           )
+        self.features[name].include_in(self)
+        self._set_feature(name,1)
+
+    def include(self,**attrs):
+        """Add items to distribution that are named in keyword arguments
+
+        For example, 'dist.exclude(py_modules=["x"])' would add 'x' to
+        the distribution's 'py_modules' attribute, if it was not already
+        there.
+
+        Currently, this method only supports inclusion for attributes that are
+        lists or tuples.  If you need to add support for adding to other
+        attributes in this or a subclass, you can add an '_include_X' method,
+        where 'X' is the name of the attribute.  The method will be called with
+        the value passed to 'include()'.  So, 'dist.include(foo={"bar":"baz"})'
+        will try to call 'dist._include_foo({"bar":"baz"})', which can then
+        handle whatever special inclusion logic is needed.
+        """
+        for k,v in attrs.items():
+            include = getattr(self, '_include_'+k, None)
+            if include:
+                include(v)
+            else:
+                self._include_misc(k,v)
+
+    def exclude_package(self,package):
+        """Remove packages, modules, and extensions in named package"""
+
+        pfx = package+'.'
+        if self.packages:
+            self.packages = [
+                p for p in self.packages
+                    if p<>package and not p.startswith(pfx)
+            ]
+
+        if self.py_modules:
+            self.py_modules = [
+                p for p in self.py_modules
+                    if p<>package and not p.startswith(pfx)
+            ]
+
+        if self.ext_modules:
+            self.ext_modules = [
+                p for p in self.ext_modules
+                    if p.name<>package and not p.name.startswith(pfx)
+            ]
+
+
+    def has_contents_for(self,package):
+        """Return true if 'exclude_package(package)' would do something"""
+
+        pfx = package+'.'
+
+        for p in self.iter_distribution_names():
+            if p==package or p.startswith(pfx):
+                return True
+
+
+
+
+
+
+
+
+
+
+    def _exclude_misc(self,name,value):
+        """Handle 'exclude()' for list/tuple attrs without a special handler"""
+        if not isinstance(value,sequence):
+            raise DistutilsSetupError(
+                "%s: setting must be a list or tuple (%r)" % (name, value)
+            )
+        try:
+            old = getattr(self,name)
+        except AttributeError:
+            raise DistutilsSetupError(
+                "%s: No such distribution setting" % name
+            )
+        if old is not None and not isinstance(old,sequence):
+            raise DistutilsSetupError(
+                name+": this setting cannot be changed via include/exclude"
+            )
+        elif old:
+            setattr(self,name,[item for item in old if item not in value])
+
+    def _include_misc(self,name,value):
+        """Handle 'include()' for list/tuple attrs without a special handler"""
+
+        if not isinstance(value,sequence):
+            raise DistutilsSetupError(
+                "%s: setting must be a list (%r)" % (name, value)
+            )
+        try:
+            old = getattr(self,name)
+        except AttributeError:
+            raise DistutilsSetupError(
+                "%s: No such distribution setting" % name
+            )
+        if old is None:
+            setattr(self,name,value)
+        elif not isinstance(old,sequence):
+            raise DistutilsSetupError(
+                name+": this setting cannot be changed via include/exclude"
+            )
+        else:
+            setattr(self,name,old+[item for item in value if item not in old])
+
+    def exclude(self,**attrs):
+        """Remove items from distribution that are named in keyword arguments
+
+        For example, 'dist.exclude(py_modules=["x"])' would remove 'x' from
+        the distribution's 'py_modules' attribute.  Excluding packages uses
+        the 'exclude_package()' method, so all of the package's contained
+        packages, modules, and extensions are also excluded.
+
+        Currently, this method only supports exclusion from attributes that are
+        lists or tuples.  If you need to add support for excluding from other
+        attributes in this or a subclass, you can add an '_exclude_X' method,
+        where 'X' is the name of the attribute.  The method will be called with
+        the value passed to 'exclude()'.  So, 'dist.exclude(foo={"bar":"baz"})'
+        will try to call 'dist._exclude_foo({"bar":"baz"})', which can then
+        handle whatever special exclusion logic is needed.
+        """
+        for k,v in attrs.items():
+            exclude = getattr(self, '_exclude_'+k, None)
+            if exclude:
+                exclude(v)
+            else:
+                self._exclude_misc(k,v)
+
+    def _exclude_packages(self,packages):
+        if not isinstance(packages,sequence):
+            raise DistutilsSetupError(
+                "packages: setting must be a list or tuple (%r)" % (packages,)
+            )
+        map(self.exclude_package, packages)
+
+
+
+
+
+
+
+
+
+
+
+
+    def _parse_command_opts(self, parser, args):
+        # Remove --with-X/--without-X options when processing command args
+        self.global_options = self.__class__.global_options
+        self.negative_opt = self.__class__.negative_opt
+
+        # First, expand any aliases
+        command = args[0]
+        aliases = self.get_option_dict('aliases')
+        while command in aliases:
+            src,alias = aliases[command]
+            del aliases[command]    # ensure each alias can expand only once!
+            import shlex
+            args[:1] = shlex.split(alias,True)
+            command = args[0]
+
+        nargs = _Distribution._parse_command_opts(self, parser, args)
+
+        # Handle commands that want to consume all remaining arguments
+        cmd_class = self.get_command_class(command)
+        if getattr(cmd_class,'command_consumes_arguments',None):
+            self.get_option_dict(command)['args'] = ("command line", nargs)
+            if nargs is not None:
+                return []
+
+        return nargs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    def get_cmdline_options(self):
+        """Return a '{cmd: {opt:val}}' map of all command-line options
+
+        Option names are all long, but do not include the leading '--', and
+        contain dashes rather than underscores.  If the option doesn't take
+        an argument (e.g. '--quiet'), the 'val' is 'None'.
+
+        Note that options provided by config files are intentionally excluded.
+        """
+
+        d = {}
+
+        for cmd,opts in self.command_options.items():
+
+            for opt,(src,val) in opts.items():
+
+                if src != "command line":
+                    continue
+
+                opt = opt.replace('_','-')
+
+                if val==0:
+                    cmdobj = self.get_command_obj(cmd)
+                    neg_opt = self.negative_opt.copy()
+                    neg_opt.update(getattr(cmdobj,'negative_opt',{}))
+                    for neg,pos in neg_opt.items():
+                        if pos==opt:
+                            opt=neg
+                            val=None
+                            break
+                    else:
+                        raise AssertionError("Shouldn't be able to get here")
+
+                elif val==1:
+                    val = None
+
+                d.setdefault(cmd,{})[opt] = val
+
+        return d
+
+
+    def iter_distribution_names(self):
+        """Yield all packages, modules, and extension names in distribution"""
+
+        for pkg in self.packages or ():
+            yield pkg
+
+        for module in self.py_modules or ():
+            yield module
+
+        for ext in self.ext_modules or ():
+            if isinstance(ext,tuple):
+                name, buildinfo = ext
+            else:
+                name = ext.name
+            if name.endswith('module'):
+                name = name[:-6]
+            yield name
+
+# Install it throughout the distutils
+for module in distutils.dist, distutils.core, distutils.cmd:
+    module.Distribution = Distribution
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+class Feature:
+    """A subset of the distribution that can be excluded if unneeded/wanted
+
+    Features are created using these keyword arguments:
+
+      'description' -- a short, human readable description of the feature, to
+         be used in error messages, and option help messages.
+
+      'standard' -- if true, the feature is included by default if it is
+         available on the current system.  Otherwise, the feature is only
+         included if requested via a command line '--with-X' option, or if
+         another included feature requires it.  The default setting is 'False'.
+
+      'available' -- if true, the feature is available for installation on the
+         current system.  The default setting is 'True'.
+
+      'optional' -- if true, the feature's inclusion can be controlled from the
+         command line, using the '--with-X' or '--without-X' options.  If
+         false, the feature's inclusion status is determined automatically,
+         based on 'availabile', 'standard', and whether any other feature
+         requires it.  The default setting is 'True'.
+
+      'require_features' -- a string or sequence of strings naming features
+         that should also be included if this feature is included.  Defaults to
+         empty list.  May also contain 'Require' objects that should be
+         added/removed from the distribution.
+
+      'remove' -- a string or list of strings naming packages to be removed
+         from the distribution if this feature is *not* included.  If the
+         feature *is* included, this argument is ignored.  This argument exists
+         to support removing features that "crosscut" a distribution, such as
+         defining a 'tests' feature that removes all the 'tests' subpackages
+         provided by other features.  The default for this argument is an empty
+         list.  (Note: the named package(s) or modules must exist in the base
+         distribution when the 'setup()' function is initially called.)
+
+      other keywords -- any other keyword arguments are saved, and passed to
+         the distribution's 'include()' and 'exclude()' methods when the
+         feature is included or excluded, respectively.  So, for example, you
+         could pass 'packages=["a","b"]' to cause packages 'a' and 'b' to be
+         added or removed from the distribution as appropriate.
+
+    A feature must include at least one 'requires', 'remove', or other
+    keyword argument.  Otherwise, it can't affect the distribution in any way.
+    Note also that you can subclass 'Feature' to create your own specialized
+    feature types that modify the distribution in other ways when included or
+    excluded.  See the docstrings for the various methods here for more detail.
+    Aside from the methods, the only feature attributes that distributions look
+    at are 'description' and 'optional'.
+    """
+    def __init__(self, description, standard=False, available=True,
+        optional=True, require_features=(), remove=(), **extras
+    ):
+
+        self.description = description
+        self.standard = standard
+        self.available = available
+        self.optional = optional
+        if isinstance(require_features,(str,Require)):
+            require_features = require_features,
+
+        self.require_features = [
+            r for r in require_features if isinstance(r,str)
+        ]
+        er = [r for r in require_features if not isinstance(r,str)]
+        if er: extras['require_features'] = er
+
+        if isinstance(remove,str):
+            remove = remove,
+        self.remove = remove
+        self.extras = extras
+
+        if not remove and not require_features and not extras:
+            raise DistutilsSetupError(
+                "Feature %s: must define 'require_features', 'remove', or at least one"
+                " of 'packages', 'py_modules', etc."
+            )
+
+    def include_by_default(self):
+        """Should this feature be included by default?"""
+        return self.available and self.standard
+
+    def include_in(self,dist):
+
+        """Ensure feature and its requirements are included in distribution
+
+        You may override this in a subclass to perform additional operations on
+        the distribution.  Note that this method may be called more than once
+        per feature, and so should be idempotent.
+
+        """
+
+        if not self.available:
+            raise DistutilsPlatformError(
+                self.description+" is required,"
+                "but is not available on this platform"
+            )
+
+        dist.include(**self.extras)
+
+        for f in self.require_features:
+            dist.include_feature(f)
+
+
+
+    def exclude_from(self,dist):
+
+        """Ensure feature is excluded from distribution
+
+        You may override this in a subclass to perform additional operations on
+        the distribution.  This method will be called at most once per
+        feature, and only after all included features have been asked to
+        include themselves.
+        """
+
+        dist.exclude(**self.extras)
+
+        if self.remove:
+            for item in self.remove:
+                dist.exclude_package(item)
+
+
+
+    def validate(self,dist):
+
+        """Verify that feature makes sense in context of distribution
+
+        This method is called by the distribution just before it parses its
+        command line.  It checks to ensure that the 'remove' attribute, if any,
+        contains only valid package/module names that are present in the base
+        distribution when 'setup()' is called.  You may override it in a
+        subclass to perform any other required validation of the feature
+        against a target distribution.
+        """
+
+        for item in self.remove:
+            if not dist.has_contents_for(item):
+                raise DistutilsSetupError(
+                    "%s wants to be able to remove %s, but the distribution"
+                    " doesn't contain any packages or modules under %s"
+                    % (self.description, item, item)
+                )
addfile ./setuptools-0.6c14devdev.egg/setuptools/dist.pyc
binary ./setuptools-0.6c14devdev.egg/setuptools/dist.pyc
oldhex
*
newhex
*d1f20d0a4a1ef84b6300000000000000001300000040000000739e0100006400006701005a0000
*6401006402006b01006c02005a0300016401006403006b04006c05005a0500016401006404006b
*06006c07005a0700016401006405006b08006c09005a0900016401006406006b0a006c0b005a0b
*00016401006407006b0c006c0d005a0d006c0e005a0e00016401006408006b0c006c0f005a0f00
*016401006409006b10005a10006401006409006b11005a11006401006409006b01005a12006401
*006409006b13005a12006401006409006b14005a12006401006409006b15005a15006401006409
*006b16005a1200640a008400005a17006517006503008301005a03006518006519006602005a1a
*00640b008400005a1b00640c008400005a1c00640d008400005a1d00640e008400005a1e00640f
*008400005a1f006410008400005a20006411008400005a21006412008400005a22006413008400
*005a2300640000650300660100641400840000830000595a020078290065120069240065120069
*2500651200692600660300445d0f005a27006502006527005f0200717401576415006600006416
*00840000830000595a2800640900532817000000740c000000446973747269627574696f6e69ff
*ffffff280100000052000000002801000000740700000052657175697265280100000074070000
*00696e7374616c6c2801000000740500000073646973742801000000740b000000696e7374616c
*6c5f6c696228020000007414000000446973747574696c734f7074696f6e4572726f7274160000
*00446973747574696c73506c6174666f726d4572726f7228010000007413000000446973747574
*696c7353657475704572726f724e63010000000100000003000000430000007352000000782400
*7c00006900006901006401008301006f1000017c00006902005c01007d000071030001577c0000
*690000690100640200830100701400017403006403007c0000168301008201006e0100017c0000
*532804000000739500000050726f7465637420616761696e73742072652d7061746368696e6720
*74686520646973747574696c732069662072656c6f616465640a0a20202020416c736f20656e73
*757265732074686174206e6f206f7468657220646973747574696c7320657874656e73696f6e20
*6d6f6e6b6579706174636865642074686520646973747574696c730a2020202066697273742e0a
*20202020740a0000007365747570746f6f6c737409000000646973747574696c73732800000064
*6973747574696c732068617320616c7265616479206265656e2070617463686564206279202572
*2804000000740a0000005f5f6d6f64756c655f5f740a0000007374617274737769746874090000
*005f5f62617365735f5f740e000000417373657274696f6e4572726f7228010000007403000000
*636c732800000000280000000073280000006275696c645c62646973742e77696e33325c656767
*5c7365747570746f6f6c735c646973742e7079740e0000005f6765745f756e706174636865640d
*000000730e00000000060300130111011301030111026303000000040000000800000043000000
*7368000000792c007400006901006902006401007c0200178301007d03007c03006903000c7007
*000174040082010001576e3500047405007406007407007404006604006a0a006f1d0001010101
*7408006402007c01007c0200660200168301008201006e020001586400005328030000004e7302
*000000783d73340000002572206d75737420626520696d706f727461626c6520276d6f64756c65
*3a61747472732720737472696e672028676f74202572292809000000740d000000706b675f7265
*736f7572636573740a000000456e747279506f696e747405000000706172736574060000006578
*74726173520d0000007409000000547970654572726f72740a00000056616c75654572726f7274
*0e0000004174747269627574654572726f72520700000028040000007404000000646973747404
*00000061747472740500000076616c756574020000006570280000000028000000007328000000
*6275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c646973742e70
*797410000000636865636b5f696d706f727461626c651f000000730e0000000001030116011601
*1a01030103016303000000030000000800000043000000735d0000007921006401006900007c02
*008301007c02006a03007007000174010082010001576e35000474020074030074040074010066
*04006a0a006f1d00010101017405006402007c01007c0200660200168301008201006e02000158
*640300532804000000732a00000056657269667920746861742076616c75652069732061207374
*72696e67206c697374206f72204e6f6e65740000000073250000002572206d7573742062652061
*206c697374206f6620737472696e67732028676f74202572294e280600000074040000006a6f69
*6e520d000000521400000052150000005216000000520700000028030000005217000000521800
*000052190000002800000000280000000073280000006275696c645c62646973742e77696e3332
*5c6567675c7365747570746f6f6c735c646973742e707974120000006173736572745f73747269
*6e675f6c6973742a000000730a0000000002030121011a01030163030000000500000006000000
*4300000073a10000007400007c00007c01007c020083030001788a007c0200445d82007d03007c
*00006901007c0300830100701800017402006401006402007c030016178301008201006e010001
*6403007c03006a06006f4700016403006903007c0300690400640300830100640400208301007d
*04007c04007c02006a07006f1a00017405006906006907006405007c03007c0400830300017199
*0001711700017117005764060053280700000073280000005665726966792074686174206e616d
*657370616365207061636b61676573206172652076616c69647331000000446973747269627574
*696f6e20636f6e7461696e73206e6f206d6f64756c6573206f72207061636b6167657320666f72
*2073140000006e616d657370616365207061636b61676520257274010000002e69ffffffff7355
*0000002572206973206465636c617265642061732061207061636b616765206e616d6573706163
*652c20627574202572206973206e6f743a20706c6561736520636f727265637420746869732069
*6e2073657475702e70794e2808000000521e00000074100000006861735f636f6e74656e74735f
*666f725207000000521d000000740500000073706c6974520900000074030000006c6f67740400
*00007761726e280500000052170000005218000000521900000074030000006e73707406000000
*706172656e742800000000280000000073280000006275696c645c62646973742e77696e33325c
*6567675c7365747570746f6f6c735c646973742e70797409000000636865636b5f6e7370330000
*00731a000000000210010700060110010301030112020d011c010d010901030163030000000500
*000007000000430000007363000000793400782d007c0200690000830000445d1f005c02007d03
*007d04007401007402006903007c04008301008301000171100057576e28000474040074050074
*06006603006a0a006f1300010101017407006401008301008201006e0200015864020053280300
*0000732b0000005665726966792074686174206578747261735f72657175697265206d61707069
*6e672069732076616c6964738b000000276578747261735f7265717569726527206d7573742062
*6520612064696374696f6e6172792077686f73652076616c7565732061726520737472696e6773
*206f72206c69737473206f6620737472696e677320636f6e7461696e696e672076616c69642070
*726f6a6563742f76657273696f6e20726571756972656d656e7420737065636966696572732e4e
*280800000074050000006974656d7374040000006c697374521000000074120000007061727365
*5f726571756972656d656e74735214000000521500000052160000005207000000280500000052
*170000005218000000521900000074010000006b74010000007628000000002800000000732800
*00006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c64697374
*2e7079740c000000636865636b5f65787472617344000000730e000000000203010d000c011b01
*17010301630300000003000000040000004300000073310000007400007c02008301007c02006a
*03006f1a00017401006401007c01007c0200660200168301008201006e01000164020053280300
*0000732900000056657269667920746861742076616c756520697320547275652c2046616c7365
*2c20302c206f72203173230000002572206d757374206265206120626f6f6c65616e2076616c75
*652028676f74202572294e28020000007404000000626f6f6c5207000000280300000052170000
*00521800000052190000002800000000280000000073280000006275696c645c62646973742e77
*696e33325c6567675c7365747570746f6f6c735c646973742e7079740b0000006173736572745f
*626f6f6c5300000073060000000002130103016303000000030000000600000043000000734a00
*00007917007400007401006902007c020083010083010001576e2c00047403007404006602006a
*0a006f1a00010101017405006401007c0100660100168301008201006e02000158640200532803
*0000007339000000566572696679207468617420696e7374616c6c5f7265717569726573206973
*20612076616c696420726571756972656d656e7473206c697374735e0000002572206d75737420
*6265206120737472696e67206f72206c697374206f6620737472696e677320636f6e7461696e69
*6e672076616c69642070726f6a6563742f76657273696f6e20726571756972656d656e74207370
*65636966696572734e280600000052280000005210000000522900000052140000005215000000
*520700000028030000005217000000521800000052190000002800000000280000000073280000
*006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c646973742e
*70797412000000636865636b5f726571756972656d656e747359000000730c0000000002030117
*011401030103016303000000040000000500000043000000733c00000079140074000069010069
*02007c020083010001576e2100047403006a0a006f150001017d0300017404007c030083010082
*01006e020001586401005328020000007329000000566572696679207468617420656e7472795f
*706f696e7473206d617020697320706172736561626c654e280500000052100000005211000000
*740900000070617273655f6d617052150000005207000000280400000052170000005218000000
*52190000007401000000652800000000280000000073280000006275696c645c62646973742e77
*696e33325c6567675c7365747570746f6f6c735c646973742e70797412000000636865636b5f65
*6e7472795f706f696e747362000000730800000000020301140110016303000000030000000300
*00004300000073240000007400007c020074010083020070100001740200640100830100820100
*6e0100016400005328020000004e731b000000746573745f7375697465206d7573742062652061
*20737472696e672803000000740a0000006973696e7374616e6365740a00000062617365737472
*696e67520700000028030000005217000000521800000052190000002800000000280000000073
*280000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c6469
*73742e70797410000000636865636b5f746573745f737569746569000000730400000000011001
*630300000005000000060000004300000073830000007400007c02007401008302006f5f000178
*5c007c0200690200830000445d46005c02007d03007d04007400007c0300740300830200700500
*01506e010001790e007404007c04008301000157711d00047405006a0a006f0800010101015071
*1d000158711d0057640100536e0100017406007c01006402001783010082010064010053280300
*0000734000000056657269667920746861742076616c756520697320612064696374696f6e6172
*79206f66207061636b616765206e616d657320746f20676c6f62206c697374734e734900000020
*6d75737420626520612064696374696f6e617279206d617070696e67207061636b616765206e61
*6d657320746f206c69737473206f662077696c6463617264207061747465726e73280700000052
*330000007404000000646963745227000000740300000073747274040000006974657252140000
*0052070000002805000000521700000052180000005219000000522a000000522b000000280000
*0000280000000073280000006275696c645c62646973742e77696e33325c6567675c7365747570
*746f6f6c735c646973742e70797412000000636865636b5f7061636b6167655f646174616d0000
*007318000000000210010d000c011000050103000e010e010a0208010301630000000000000000
*020000004200000073ef0000006500005a01006400005a02006419005a04006401008400005a05
*006419006402008401005a06006403008400005a07006404008400005a08006405008400005a09
*006406008400005a0a006407008400005a0b006408008400005a0c006409008400005a0d00640a
*008400005a0e00640b008400005a0f00640c008400005a1000640d008400005a1100640e008400
*005a1200640f008400005a13006410008400005a14006411008400005a15006412008400005a16
*006413008400005a17006414008400005a18006415008400005a19006416008400005a1a006417
*008400005a1b006418008400005a1c005253281a00000073780f0000446973747269627574696f
*6e207769746820737570706f727420666f722066656174757265732c2074657374732c20616e64
*207061636b61676520646174610a0a202020205468697320697320616e20656e68616e63656420
*76657273696f6e206f662027646973747574696c732e646973742e446973747269627574696f6e
*2720746861740a202020206566666563746976656c7920616464732074686520666f6c6c6f7769
*6e67206e6577206f7074696f6e616c206b6579776f726420617267756d656e747320746f202773
*657475702829273a0a0a202020202027696e7374616c6c5f726571756972657327202d2d206120
*737472696e67206f722073657175656e6365206f6620737472696e67732073706563696679696e
*672070726f6a6563740a202020202020202076657273696f6e7320746861742074686520646973
*747269627574696f6e207265717569726573207768656e20696e7374616c6c65642c20696e2074
*686520666f726d61740a2020202020202020757365642062792027706b675f7265736f75726365
*732e726571756972652829272e2020546865792077696c6c20626520696e7374616c6c65640a20
*202020202020206175746f6d61746963616c6c79207768656e20746865207061636b6167652069
*7320696e7374616c6c65642e2020496620796f75207769736820746f207573650a202020202020
*20207061636b61676573207468617420617265206e6f7420617661696c61626c6520696e205079
*50492c206f722077616e7420746f206769766520796f757220757365727320616e0a2020202020
*202020616c7465726e61746520646f776e6c6f6164206c6f636174696f6e2c20796f752063616e
*206164642061202766696e645f6c696e6b7327206f7074696f6e20746f207468650a2020202020
*202020275b656173795f696e7374616c6c5d272073656374696f6e206f6620796f75722070726f
*6a6563742773202773657475702e636667272066696c652c20616e64207468656e0a2020202020
*2020207365747570746f6f6c732077696c6c207363616e20746865206c69737465642077656220
*706167657320666f72206c696e6b7320746861742073617469736679207468650a202020202020
*2020726571756972656d656e74732e0a0a2020202020276578747261735f726571756972652720
*2d2d20612064696374696f6e617279206d617070696e67206e616d6573206f66206f7074696f6e
*616c20226578747261732220746f207468650a20202020202020206164646974696f6e616c2072
*6571756972656d656e742873292074686174207573696e672074686f7365206578747261732069
*6e637572732e20466f72206578616d706c652c0a2020202020202020746869733a3a0a0a202020
*2020202020202020206578747261735f72657175697265203d20646963742872655354203d205b
*22646f637574696c733e3d302e33222c20227265535465646974225d290a0a2020202020202020
*696e6469636174657320746861742074686520646973747269627574696f6e2063616e206f7074
*696f6e616c6c792070726f7669646520616e2065787472610a2020202020202020636170616269
*6c6974792063616c6c6564202272655354222c206275742069742063616e206f6e6c7920626520
*7573656420696620646f637574696c7320616e640a202020202020202072655354656469742061
*726520696e7374616c6c65642e2020496620746865207573657220696e7374616c6c7320796f75
*72207061636b616765207573696e670a202020202020202045617379496e7374616c6c20616e64
*207265717565737473206f6e65206f6620796f7572206578747261732c2074686520636f727265
*73706f6e64696e670a20202020202020206164646974696f6e616c20726571756972656d656e74
*732077696c6c20626520696e7374616c6c6564206966206e65656465642e0a0a20202020202766
*6561747572657327202d2d20612064696374696f6e617279206d617070696e67206f7074696f6e
*206e616d657320746f20277365747570746f6f6c732e46656174757265270a2020202020202020
*6f626a656374732e2020466561747572657320617265206120706f7274696f6e206f6620746865
*20646973747269627574696f6e20746861742063616e2062650a2020202020202020696e636c75
*646564206f72206578636c75646564206261736564206f6e2075736572206f7074696f6e732c20
*696e7465722d6665617475726520646570656e64656e636965732c0a2020202020202020616e64
*20617661696c6162696c697479206f6e207468652063757272656e742073797374656d2e202045
*78636c7564656420666561747572657320617265206f6d69747465640a20202020202020206672
*6f6d20616c6c20736574757020636f6d6d616e64732c20696e636c7564696e6720736f75726365
*20616e642062696e61727920646973747269627574696f6e732c20736f0a202020202020202079
*6f752063616e20637265617465206d756c7469706c6520646973747269627574696f6e73206672
*6f6d207468652073616d6520736f7572636520747265652e0a2020202020202020466561747572
*65206e616d65732073686f756c642062652076616c696420507974686f6e206964656e74696669
*6572732c2065786365707420746861742074686579206d61790a2020202020202020636f6e7461
*696e2074686520272d2720286d696e757329207369676e2e202046656174757265732063616e20
*626520696e636c75646564206f72206578636c756465640a202020202020202076696120746865
*20636f6d6d616e64206c696e65206f7074696f6e7320272d2d776974682d582720616e6420272d
*2d776974686f75742d58272c207768657265202758272069730a2020202020202020746865206e
*616d65206f662074686520666561747572652e2020576865746865722061206665617475726520
*697320696e636c756465642062792064656661756c742c20616e640a2020202020202020776865
*7468657220796f752061726520616c6c6f77656420746f20636f6e74726f6c2074686973206672
*6f6d2074686520636f6d6d616e64206c696e652c2069730a202020202020202064657465726d69
*6e6564206279207468652046656174757265206f626a6563742e20205365652074686520274665
*61747572652720636c61737320666f72206d6f72650a2020202020202020696e666f726d617469
*6f6e2e0a0a202020202027746573745f737569746527202d2d20746865206e616d65206f662061
*207465737420737569746520746f2072756e20666f72207468652027746573742720636f6d6d61
*6e642e0a202020202020202049662074686520757365722072756e732027707974686f6e207365
*7475702e70792074657374272c20746865207061636b6167652077696c6c20626520696e737461
*6c6c65642c0a2020202020202020616e6420746865206e616d6564207465737420737569746520
*77696c6c2062652072756e2e202054686520666f726d6174206973207468652073616d65206173
*0a2020202020202020776f756c642062652075736564206f6e20612027756e6974746573742e70
*792720636f6d6d616e64206c696e652e2020546861742069732c206974206973207468650a2020
*202020202020646f74746564206e616d65206f6620616e206f626a65637420746f20696d706f72
*7420616e642063616c6c20746f2067656e6572617465206120746573742073756974652e0a0a20
*20202020277061636b6167655f6461746127202d2d20612064696374696f6e617279206d617070
*696e67207061636b616765206e616d657320746f206c69737473206f662066696c656e616d6573
*0a20202020202020206f7220676c6f627320746f2075736520746f2066696e6420646174612066
*696c657320636f6e7461696e656420696e20746865206e616d6564207061636b616765732e0a20
*202020202020204966207468652064696374696f6e617279206861732066696c656e616d657320
*6f7220676c6f6273206c697374656420756e6465722027222227202874686520656d7074790a20
*20202020202020737472696e67292c2074686f7365206e616d65732077696c6c20626520736561
*726368656420666f7220696e206576657279207061636b6167652c20696e206164646974696f6e
*0a2020202020202020746f20616e79206e616d657320666f722074686520737065636966696320
*7061636b6167652e2020446174612066696c657320666f756e64207573696e672074686573650a
*20202020202020206e616d65732f676c6f62732077696c6c20626520696e7374616c6c65642061
*6c6f6e67207769746820746865207061636b6167652c20696e207468652073616d650a20202020
*202020206c6f636174696f6e20617320746865207061636b6167652e20204e6f74652074686174
*20676c6f62732061726520616c6c6f77656420746f207265666572656e63650a20202020202020
*2074686520636f6e74656e7473206f66206e6f6e2d7061636b616765207375626469726563746f
*726965732c206173206c6f6e6720617320796f752075736520272f272061730a20202020202020
*2061207061746820736570617261746f722e202028476c6f627320617265206175746f6d617469
*63616c6c7920636f6e76657274656420746f0a2020202020202020706c6174666f726d2d737065
*63696669632070617468732061742072756e74696d652e290a0a20202020496e20616464697469
*6f6e20746f207468657365206e6577206b6579776f7264732c207468697320636c61737320616c
*736f20686173207365766572616c206e6577206d6574686f64730a20202020666f72206d616e69
*70756c6174696e672074686520646973747269627574696f6e277320636f6e74656e74732e2020
*466f72206578616d706c652c207468652027696e636c7564652829270a20202020616e64202765
*78636c756465282927206d6574686f64732063616e2062652074686f75676874206f6620617320
*696e2d706c6163652061646420616e642073756274726163740a20202020636f6d6d616e647320
*7468617420616464206f722072656d6f7665207061636b616765732c206d6f64756c65732c2065
*7874656e73696f6e732c20616e6420736f206f6e2066726f6d0a20202020746865206469737472
*69627574696f6e2e20205468657920617265207573656420627920746865206665617475726520
*73756273797374656d20746f20636f6e666967757265207468650a202020206469737472696275
*74696f6e20666f722074686520696e636c7564656420616e64206578636c756465642066656174
*757265732e0a20202020630200000004000000040000004300000073a60000007c01000c701a00
*016401007c01006a0700700d00016402007c01006a07006f050001640000530174000069010074
*02007c0100640100198301008301006903008300007d02007400006904006905006906007c0200
*8301007d03007c03006400006a09006f3a00017c03006908006403008301000c6f290001740000
*6909007402007c0100640200198301008301007c03005f0a007c03007c00005f0b006e01000164
*00005328040000004e74040000006e616d65740700000076657273696f6e7308000000504b472d
*494e464f280c00000052100000007409000000736166655f6e616d65523700000074050000006c
*6f776572740b000000776f726b696e675f736574740600000062795f6b65797403000000676574
*74040000004e6f6e65740c0000006861735f6d65746164617461740c000000736166655f766572
*73696f6e74080000005f76657273696f6e740d0000005f706174636865645f6469737428040000
*00740400000073656c667405000000617474727374030000006b65795217000000280000000028
*0000000073280000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f
*6c735c646973742e7079741600000070617463685f6d697373696e675f706b675f696e666fc100
*0000730e0000000005220105011f0115011e011c01630200000004000000070000004300000073
*450100007400007c00006401008302007d02007c0200700d00016800007c00005f01006e010001
*6700007c00005f02006800007c00005f03006700007c00005f04007c00006905007c0100830100
*017c01006400006a09006f2c00017c01006907006402006700008302007c00005f08007409007c
*00006402007c0000690800830300016e0100017c01006f2700016403007c01006a06006f1a0001
*7c0000690a007c0100690700640300830100830100016e010001784100740b00690c0064040083
*0100445d30007d03007400007c00007c0300690d0083020070170001740e007c00007c0300690d
*006400008303000171c2000171c20057740f006910007c00007c0100830200017411007c000069
*12006913007414007415007416006603008302006f1c00017417007c0000691200691300830100
*7c00006912005f13006e0100016400005328050000004e740c0000007061636b6167655f646174
*617410000000646570656e64656e63795f6c696e6b73740e00000073657475705f726571756972
*65737318000000646973747574696c732e73657475705f6b6579776f7264732818000000740700
*000068617361747472524a0000007410000000726571756972655f666561747572657374080000
*006665617475726573740a000000646973745f66696c6573524900000052410000007403000000
*706f70524b000000521e000000741000000066657463685f6275696c645f656767735210000000
*7411000000697465725f656e7472795f706f696e7473523a000000740700000073657461747472
*740d0000005f446973747269627574696f6e74080000005f5f696e69745f5f5233000000740800
*00006d65746164617461523b0000007403000000696e7474040000006c6f6e677405000000666c
*6f617452370000002804000000524600000052470000007411000000686176655f7061636b6167
*655f64617461521a0000002800000000280000000073280000006275696c645c62646973742e77
*696e33325c6567675c7365747570746f6f6c735c646973742e70795256000000ce000000732600
*000000010f0107010d010901090109010d020d011501170114011a011000060113011b0110011f
*026301000000020000000200000043000000732b0000007400006901007c00008301007d01007c
*00006902006f0e00017c0000690300830000016e0100017c010053280100000073330000005072
*6f636573732066656174757265732061667465722070617273696e6720636f6d6d616e64206c69
*6e65206f7074696f6e7328040000005255000000741200000070617273655f636f6d6d616e645f
*6c696e65524f00000074120000005f66696e616c697a655f666561747572657328020000005246
*0000007406000000726573756c742800000000280000000073280000006275696c645c62646973
*742e77696e33325c6567675c7365747570746f6f6c735c646973742e7079525c000000e4000000
*730800000000020f010a010e01630200000002000000040000004300000073140000006401007c
*010069000064020064030083020017532804000000733b000000436f6e76657274206665617475
*7265206e616d6520746f20636f72726573706f6e64696e67206f7074696f6e2061747472696275
*7465206e616d657405000000776974685f74010000002d74010000005f28010000007407000000
*7265706c61636528020000005246000000523a0000002800000000280000000073280000006275
*696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c646973742e707974
*110000005f666561747572655f617474726e616d65eb0000007302000000000263020000000500
*0000050000004300000073500000006401006402006b00006c01007d02006c02007d0300017833
*007c02006903007c03007c01008301006403007c0000690400830101445d13007d04007c020069
*05007c04008301000171350057640400532805000000731e0000005265736f6c7665207072652d
*736574757020726571756972656d656e747369ffffffff2802000000523e000000522900000074
*09000000696e7374616c6c65724e28060000005210000000523e00000052290000007407000000
*7265736f6c7665740f00000066657463685f6275696c645f656767740300000061646428050000
*00524600000074080000007265717569726573523e000000522900000052170000002800000000
*280000000073280000006275696c645c62646973742e77696e33325c6567675c7365747570746f
*6f6c735c646973742e70795252000000ef000000730a0000000002160109011600060263010000
*0003000000050000004300000073950000007400006901007c0000830100017c00006902006f0e
*00017c0000690300830000016e010001786900740400690500640100830100445d58007d010074
*06007c00007c01006907006400008303007d02007c02006400006a09006f3000017c0100690900
*6402007c0000690a00830001017c0100690b008300007c00007c01006907007c02008303000171
*350001713500576400005328030000004e7318000000646973747574696c732e73657475705f6b
*6579776f7264735264000000280c0000005255000000741000000066696e616c697a655f6f7074
*696f6e73524f000000741e0000005f7365745f676c6f62616c5f6f7074735f66726f6d5f666561
*747572657352100000005253000000740700000067657461747472523a00000052410000007407
*00000072657175697265526600000074040000006c6f616428030000005246000000521a000000
*52190000002800000000280000000073280000006275696c645c62646973742e77696e33325c65
*67675c7365747570746f6f6c735c646973742e70795269000000f7000000731200000000010d01
*0a010e021000060115010d01130163020000000900000018000000430000007353010000790d00
*7c00006900007d0200576e3601047401006a0a006f2a01010101016401006402006b02006c0300
*7d0300017c0000690400680100640300670100640400368301007d04007c040069050083000001
*7c04006906006403008301007d05006416007d0600782c007c0500690700830000445d1e007d07
*007c07007c06006a07006f0b00017c05007c07003d71730001717300577c00006908006f470001
*7c00006908001e7d08006405007c05006a06006f1c00017c050064050019640a00196909008300
*007c0800177d08006e010001640b007c08006602007c05006405003c6e0100017c03007c040064
*0c00640d00670100640e00740a00690b00640f00740c00641000740d0064110064170064120074
*0d00641300740d00641400740c00641500740c008301097d02007c0200690f00830000017c0200
*7c00005f00006e020001587c02006903007c010083010053281800000073200000004665746368
*20616e20656767206e656564656420666f72206275696c64696e6769ffffffff2801000000740c
*000000656173795f696e7374616c6c526e000000740b0000007363726970745f61726773740a00
*000066696e645f6c696e6b737409000000736974655f646972737409000000696e6465785f7572
*6c74080000006f7074696d697a65740b000000616c6c6f775f686f737473690100000074050000
*007365747570740400000061726773740100000078740b000000696e7374616c6c5f646972740f
*0000006578636c7564655f73637269707473740b000000616c776179735f636f7079740f000000
*6275696c645f6469726563746f727974080000006564697461626c657407000000757067726164
*65740d0000006d756c74695f76657273696f6e74090000006e6f5f7265706f7274280600000073
*0a00000066696e645f6c696e6b737309000000736974655f646972737309000000696e6465785f
*75726c73080000006f7074696d697a657309000000736974655f64697273730b000000616c6c6f
*775f686f7374734e2810000000740c0000005f6567675f666574636865725216000000741f0000
*007365747570746f6f6c732e636f6d6d616e642e656173795f696e7374616c6c526e0000007409
*0000005f5f636c6173735f5f741200000070617273655f636f6e6669675f66696c6573740f0000
*006765745f6f7074696f6e5f6469637474040000006b657973524b000000522100000074020000
*006f737406000000637572646972740400000054727565740500000046616c7365524100000074
*10000000656e737572655f66696e616c697a656428090000005246000000740300000072657174
*03000000636d64526e000000521700000074040000006f70747374040000006b65657052480000
*0074050000006c696e6b732800000000280000000073280000006275696c645c62646973742e77
*696e33325c6567675c7365747570746f6f6c735c646973742e7079526600000002010000733200
*0000000203010d010e01100119010a010f02000106020d0006010d010f010a010a010d011c0114
*0103011e01120115020a010e01630100000008000000060000004300000073140100006700007d
*01007c00006900006901008300007d020078d1007c0000690200690300830000445dc0005c0200
*7d03007d04007c00006904007c0300640700830200017c04006906007c0000830100017c040069
*07006f8d00017c04006908007d05006401007d06006402007d07007c0400690900830000701100
*017c06007c0700027d07007d06006e0100017c0100690a006403007c0300176407006404007c05
*00177c060017660300830100017c0100690a006405007c0300176407006406007c0500177c0700
*17660300830100016403007c0300177c02006405007c0300173c71250001712500577c01007c00
*00690b0017047c00005f0b007c00005f0c007c0200047c00005f00007c00005f0d006407005328
*08000000733b000000416464202d2d776974682d582f2d2d776974686f75742d58206f7074696f
*6e73206261736564206f6e206f7074696f6e616c206665617475726573730a0000002028646566
*61756c7429521c0000007305000000776974682d7308000000696e636c75646520730800000077
*6974686f75742d73080000006578636c756465204e280e000000740c0000006e65676174697665
*5f6f70747404000000636f7079524f0000005227000000740c0000005f7365745f666561747572
*655241000000740800000076616c696461746574080000006f7074696f6e616c740b0000006465
*736372697074696f6e7412000000696e636c7564655f62795f64656661756c7474060000006170
*70656e64740e000000676c6f62616c5f6f7074696f6e73740f000000666561747572655f6f7074
*696f6e73740e000000666561747572655f6e65676f707428080000005246000000740200000067
*6f74020000006e6f523a0000007407000000666561747572657405000000646573637274060000
*00696e6364656674060000006578636465662800000000280000000073280000006275696c645c
*62646973742e77696e33325c6567675c7365747570746f6f6c735c646973742e7079526a000000
*200100007322000000000306010f0210000c0110010d020a010901060106010d01110222012201
*1a021701630100000004000000060000004300000073c6000000786e007c000069000069010083
*0000445d5d005c02007d01007d02007c00006902007c01008301007d03007c0300701a00017c03
*006403006a08006f2e00017c02006904008300006f2100017c02006905007c0000830100017c00
*006906007c0100640100830200017110000171100057784e007c0000690000690100830000445d
*3d005c02007d01007d02007c00006902007c0100830100702100017c02006907007c0000830100
*017c00006906007c01006402008302000171810001718100576403005328040000007339000000
*4164642f72656d6f766520666561747572657320616e64207265736f6c766520646570656e6465
*6e63696573206265747765656e207468656d690100000069000000004e2808000000524f000000
*52270000007413000000666561747572655f69735f696e636c7564656452410000005296000000
*740a000000696e636c7564655f696e5292000000740c0000006578636c7564655f66726f6d2804
*0000005246000000523a000000529d0000007407000000656e61626c6564280000000028000000
*0073280000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c
*646973742e7079525d000000490100007316000000000410000c010f0121010d01180410000c01
*10010d01630200000004000000050000004300000073780000007c01007c00006900006a06006f
*0c00017c00006900007c01001953017855007401006902006401007c0100830200445d31007d02
*007c02006903006402007c0000690400830001017c0200690500830000047c00006900007c0100
*3c7d03007c030053577406006907007c00007c0100830200536403005328040000007328000000
*506c75676761626c652076657273696f6e206f66206765745f636f6d6d616e645f636c61737328
*297312000000646973747574696c732e636f6d6d616e647352640000004e280800000074080000
*00636d64636c61737352100000005253000000526c0000005266000000526d0000005255000000
*74110000006765745f636f6d6d616e645f636c617373280400000052460000007407000000636f
*6d6d616e64521a00000052a50000002800000000280000000073280000006275696c645c626469
*73742e77696e33325c6567675c7365747570746f6f6c735c646973742e707952a60000005b0100
*007310000000000210010c02130006011301170105026301000000030000000400000043000000
*735d000000784d00740000690100640100830100445d3c007d01007c01006902007c0000690300
*6a07006f2300017c01006904007405008301007d02007c02007c00006903007c01006902003c71
*100001711000577406006907007c00008301005328020000004e7312000000646973747574696c
*732e636f6d6d616e6473280800000052100000005253000000523a00000052a5000000526d0000
*0052890000005255000000740e0000007072696e745f636f6d6d616e6473280300000052460000
*00521a00000052a50000002800000000280000000073280000006275696c645c62646973742e77
*696e33325c6567675c7365747570746f6f6c735c646973742e707952a800000067010000730c00
*000000011000060113010f0118016303000000030000000400000043000000731d000000740000
*7c00007c00006901007c01008301007c020083030001640100532802000000731e000000536574
*2066656174757265277320696e636c7573696f6e207374617475734e2802000000525400000052
*6300000028030000005246000000523a0000007406000000737461747573280000000028000000
*0073280000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c
*646973742e70795292000000720100007302000000000263020000000200000004000000430000
*0073160000007400007c00007c00006901007c0100830100830200532801000000734100000052
*657475726e2031206966206665617475726520697320696e636c756465642c2030206966206578
*636c756465642c20274e6f6e652720696620756e6b6e6f776e2802000000526b00000052630000
*0028020000005246000000523a0000002800000000280000000073280000006275696c645c6264
*6973742e77696e33325c6567675c7365747570746f6f6c735c646973742e707952a10000007601
*000073020000000002630200000003000000030000004300000073620000007c00006900007c01
*008301006401006a02006f2400017c00006901007c0100196902007d02007403007c0200640200
*178301008201006e0100017c00006901007c0100196904007c0000830100017c00006905007c01
*006403008302000164040053280500000073290000005265717565737420696e636c7573696f6e
*206f662066656174757265206e616d656420276e616d6527690000000073320000002069732072
*657175697265642c2062757420776173206578636c75646564206f72206973206e6f7420617661
*696c61626c6569010000004e280600000052a1000000524f0000005295000000520500000052a2
*000000529200000028030000005246000000523a000000529e0000002800000000280000000073
*280000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c6469
*73742e7079740f000000696e636c7564655f666561747572657a010000730c0000000003160110
*01030111021401630100000005000000050000004b000000735c0000007855007c010069000083
*0000445d47005c02007d02007d03007401007c00006401007c0200176402008303007d04007c04
*006f0e00017c04007c030083010001710d00017c00006903007c02007c030083020001710d0057
*64020053280300000073f4020000416464206974656d7320746f20646973747269627574696f6e
*207468617420617265206e616d656420696e206b6579776f726420617267756d656e74730a0a20
*20202020202020466f72206578616d706c652c2027646973742e6578636c7564652870795f6d6f
*64756c65733d5b2278225d292720776f756c64206164642027782720746f0a2020202020202020
*74686520646973747269627574696f6e2773202770795f6d6f64756c6573272061747472696275
*74652c20696620697420776173206e6f7420616c72656164790a20202020202020207468657265
*2e0a0a202020202020202043757272656e746c792c2074686973206d6574686f64206f6e6c7920
*737570706f72747320696e636c7573696f6e20666f722061747472696275746573207468617420
*6172650a20202020202020206c69737473206f72207475706c65732e2020496620796f75206e65
*656420746f2061646420737570706f727420666f7220616464696e6720746f206f746865720a20
*202020202020206174747269627574657320696e2074686973206f72206120737562636c617373
*2c20796f752063616e2061646420616e20275f696e636c7564655f5827206d6574686f642c0a20
*2020202020202077686572652027582720697320746865206e616d65206f662074686520617474
*7269627574652e2020546865206d6574686f642077696c6c2062652063616c6c65642077697468
*0a20202020202020207468652076616c75652070617373656420746f2027696e636c7564652829
*272e2020536f2c2027646973742e696e636c75646528666f6f3d7b22626172223a2262617a227d
*29270a202020202020202077696c6c2074727920746f2063616c6c2027646973742e5f696e636c
*7564655f666f6f287b22626172223a2262617a227d29272c2077686963682063616e207468656e
*0a202020202020202068616e646c65207768617465766572207370656369616c20696e636c7573
*696f6e206c6f676963206973206e65656465642e0a202020202020202074090000005f696e636c
*7564655f4e28040000005227000000526b0000005241000000740d0000005f696e636c7564655f
*6d697363280500000052460000005247000000522a000000522b0000007407000000696e636c75
*64652800000000280000000073280000006275696c645c62646973742e77696e33325c6567675c
*7365747570746f6f6c735c646973742e707952ad00000085010000730c000000000f0d000c0116
*0107010e02630200000007000000080000004300000073190100007c0100640100177d02007c00
*006900006f4d0001670000047d03007c0000690000445d2f007d04007c04007c01006a03006f1c
*00017c04006901007c02008301000c6f0b00017c03007c040012712200017122007e03007c0000
*5f00006e0100017c00006902006f4d0001670000047d05007c0000690200445d2f007d04007c04
*007c01006a03006f1c00017c04006901007c02008301000c6f0b00017c05007c04001271790001
*7179007e05007c00005f02006e0100017c00006903006f530001670000047d06007c0000690300
*445d35007d04007c04006904007c01006a03006f1f00017c04006904006901007c02008301000c
*6f0b00017c06007c04001271d0000171d0007e06007c00005f03006e0100016402005328030000
*00733900000052656d6f7665207061636b616765732c206d6f64756c65732c20616e6420657874
*656e73696f6e7320696e206e616d6564207061636b616765521f0000004e280500000074080000
*007061636b61676573520b000000740a00000070795f6d6f64756c6573740b0000006578745f6d
*6f64756c6573523a0000002807000000524600000074070000007061636b616765740300000070
*667874040000005f5b315d74010000007074040000005f5b325d74040000005f5b335d28000000
*00280000000073280000006275696c645c62646973742e77696e33325c6567675c736574757074
*6f6f6c735c646973742e7079740f0000006578636c7564655f7061636b6167659b010000731400
*000000030a010a02140139030a02140139030a0214016302000000040000000300000043000000
*73470000007c0100640100177d02007836007c0000690000830000445d28007d03007c03007c01
*006a0200701000017c03006901007c02008301006f050001740200530171170057640200532803
*000000733c00000052657475726e207472756520696620276578636c7564655f7061636b616765
*287061636b616765292720776f756c6420646f20736f6d657468696e67521f0000004e28030000
*007417000000697465725f646973747269627574696f6e5f6e616d6573520b0000005288000000
*2804000000524600000052b100000052b200000052b40000002800000000280000000073280000
*006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c646973742e
*70795220000000b2010000730a00000000030a020d0006011d016303000000060000000a000000
*4300000073e00000007400007c0200740100830200701a00017402006401007c01007c02006602
*00168301008201006e0100017913007403007c00007c01008302007d0300576e2300047404006a
*0a006f1700010101017402006402007c0100168301008201006e020001587c03006404006a0900
*6f2500017400007c03007401008302000c6f1400017402007c0100640300178301008201006e48
*00017c03006f4000017406007c00007c0100670000047d04007c0300445d1e007d05007c05007c
*02006a07006f0b00017c04007c05001271b0000171b0007e0400830300016e0100016404005328
*05000000734100000048616e646c6520276578636c75646528292720666f72206c6973742f7475
*706c6520617474727320776974686f75742061207370656369616c2068616e646c657273280000
*0025733a2073657474696e67206d7573742062652061206c697374206f72207475706c65202825
*7229732000000025733a204e6f207375636820646973747269627574696f6e2073657474696e67
*73340000003a20746869732073657474696e672063616e6e6f74206265206368616e6765642076
*696120696e636c7564652f6578636c7564654e2807000000523300000074080000007365717565
*6e63655207000000526b0000005216000000524100000052540000002806000000524600000052
*3a000000521900000074030000006f6c6452b300000074040000006974656d2800000000280000
*000073280000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c73
*5c646973742e7079740d0000005f6578636c7564655f6d697363c4010000731a00000000021001
*03011702030113010e01030112021e010301110207016303000000060000000b00000043000000
*73ec0000007400007c0200740100830200701a00017402006401007c01007c0200660200168301
*008201006e0100017913007403007c00007c01008302007d0300576e2300047404006a0a006f17
*00010101017402006402007c0100168301008201006e020001587c03006404006a08006f140001
*7406007c00007c01007c0200830300016e6500017400007c030074010083020070140001740200
*7c0100640300178301008201006e4100017406007c00007c01007c0300670000047d04007c0200
*445d1e007d05007c05007c03006a07006f0b00017c04007c05001271bf000171bf007e04001783
*030001640400532805000000734100000048616e646c652027696e636c75646528292720666f72
*206c6973742f7475706c6520617474727320776974686f75742061207370656369616c2068616e
*646c6572731f00000025733a2073657474696e67206d7573742062652061206c69737420282572
*29732000000025733a204e6f207375636820646973747269627574696f6e2073657474696e6773
*340000003a20746869732073657474696e672063616e6e6f74206265206368616e676564207669
*6120696e636c7564652f6578636c7564654e2807000000523300000052b9000000520700000052
*6b00000052160000005241000000525400000028060000005246000000523a0000005219000000
*52ba00000052b300000052bb0000002800000000280000000073280000006275696c645c626469
*73742e77696e33325c6567675c7365747570746f6f6c735c646973742e707952ac000000d70100
*00731c0000000003100103011702030113010e01030112020d0114011001030111036301000000
*05000000050000004b000000735c0000007855007c0100690000830000445d47005c02007d0200
*7d03007401007c00006401007c0200176402008303007d04007c04006f0e00017c04007c030083
*010001710d00017c00006903007c02007c030083020001710d0057640200532803000000737f03
*000052656d6f7665206974656d732066726f6d20646973747269627574696f6e20746861742061
*7265206e616d656420696e206b6579776f726420617267756d656e74730a0a2020202020202020
*466f72206578616d706c652c2027646973742e6578636c7564652870795f6d6f64756c65733d5b
*2278225d292720776f756c642072656d6f7665202778272066726f6d0a20202020202020207468
*6520646973747269627574696f6e2773202770795f6d6f64756c65732720617474726962757465
*2e20204578636c7564696e67207061636b6167657320757365730a202020202020202074686520
*276578636c7564655f7061636b616765282927206d6574686f642c20736f20616c6c206f662074
*6865207061636b616765277320636f6e7461696e65640a20202020202020207061636b61676573
*2c206d6f64756c65732c20616e6420657874656e73696f6e732061726520616c736f206578636c
*756465642e0a0a202020202020202043757272656e746c792c2074686973206d6574686f64206f
*6e6c7920737570706f727473206578636c7573696f6e2066726f6d206174747269627574657320
*74686174206172650a20202020202020206c69737473206f72207475706c65732e202049662079
*6f75206e65656420746f2061646420737570706f727420666f72206578636c7564696e67206672
*6f6d206f746865720a20202020202020206174747269627574657320696e2074686973206f7220
*6120737562636c6173732c20796f752063616e2061646420616e20275f6578636c7564655f5827
*206d6574686f642c0a202020202020202077686572652027582720697320746865206e616d6520
*6f6620746865206174747269627574652e2020546865206d6574686f642077696c6c2062652063
*616c6c656420776974680a20202020202020207468652076616c75652070617373656420746f20
*276578636c7564652829272e2020536f2c2027646973742e6578636c75646528666f6f3d7b2262
*6172223a2262617a227d29270a202020202020202077696c6c2074727920746f2063616c6c2027
*646973742e5f6578636c7564655f666f6f287b22626172223a2262617a227d29272c2077686963
*682063616e207468656e0a202020202020202068616e646c652077686174657665722073706563
*69616c206578636c7573696f6e206c6f676963206973206e65656465642e0a2020202020202020
*74090000005f6578636c7564655f4e28040000005227000000526b000000524100000052bc0000
*00280500000052460000005247000000522a000000522b00000074070000006578636c75646528
*00000000280000000073280000006275696c645c62646973742e77696e33325c6567675c736574
*7570746f6f6c735c646973742e707952be000000ed010000730c00000000100d000c0116010701
*0e026302000000020000000300000043000000733b0000007400007c0100740100830200701700
*017402006401007c0100660100168301008201006e0100017403007c00006904007c0100830200
*016400005328020000004e732e0000007061636b616765733a2073657474696e67206d75737420
*62652061206c697374206f72207475706c6520282572292805000000523300000052b900000052
*0700000074030000006d617052b70000002802000000524600000052ae00000028000000002800
*00000073280000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c
*735c646973742e707974110000005f6578636c7564655f7061636b616765730402000073080000
*00000110010301140263030000000a000000040000004300000073f90000007c00006900006901
*007c00005f01007c00006900006902007c00005f02007c0200640100197d03007c000069030064
*02008301007d04007855007c03007c04006a06006f4700017c04007c0300195c02007d05007d06
*007c04007c03003d6403006400006b04007d07007c07006905007c06007406008302007c020064
*04002a7c0200640100197d0300713a0001577407006908007c00007c01007c02008303007d0800
*7c00006909007c03008301007d0900740a007c09006405006400008303006f2f00016406007c08
*006602007c00006903007c03008301006407003c7c08006400006a09006f05000167000053016e
*0100017c08005328080000004e69000000007407000000616c696173657369ffffffff69010000
*00741a000000636f6d6d616e645f636f6e73756d65735f617267756d656e7473730c000000636f
*6d6d616e64206c696e655276000000280c00000052820000005298000000529000000052840000
*00740500000073686c657852210000005288000000525500000074130000005f70617273655f63
*6f6d6d616e645f6f70747352a6000000526b0000005241000000280a0000005246000000740600
*0000706172736572527600000052a700000052c100000074030000007372637405000000616c69
*617352c300000074050000006e617267737409000000636d645f636c6173732800000000280000
*000073280000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c73
*5c646973742e707952c400000016020000732400000000020f010f030a010f0103000d01100107
*010c0116010f0215030f01130119010d01090263010000000b0000000800000043000000732f01
*00006800007d01007822017c0000690000690100830000445d11015c02007d02007d0300780201
*7c0300690100830000445df4005c02007d04005c02007d05007d06007c05006401006a03006f07
*0001712f006e0100017c04006902006402006403008302007d04007c06006404006a02006f8200
*017c00006903007c02008301007d07007c00006904006905008300007d08007c08006906007407
*007c070064050068000083030083010001785f007c0800690100830000445d2a005c02007d0900
*7d0a007c0a007c04006a02006f1100017c09007d04006408007d06005071b8000171b800577409
*006406008301008201006e1800017c06006407006a02006f0a00016408007d06006e0100017c06
*007c0100690a007c02006800008302007c04003c712f0057711600577c01005328090000007368
*01000052657475726e206120277b636d643a207b6f70743a76616c7d7d27206d6170206f662061
*6c6c20636f6d6d616e642d6c696e65206f7074696f6e730a0a20202020202020204f7074696f6e
*206e616d65732061726520616c6c206c6f6e672c2062757420646f206e6f7420696e636c756465
*20746865206c656164696e6720272d2d272c20616e640a2020202020202020636f6e7461696e20
*64617368657320726174686572207468616e20756e64657273636f7265732e2020496620746865
*206f7074696f6e20646f65736e27742074616b650a2020202020202020616e20617267756d656e
*742028652e672e20272d2d717569657427292c20746865202776616c2720697320274e6f6e6527
*2e0a0a20202020202020204e6f74652074686174206f7074696f6e732070726f76696465642062
*7920636f6e6669672066696c65732061726520696e74656e74696f6e616c6c79206578636c7564
*65642e0a2020202020202020730c000000636f6d6d616e64206c696e6552610000005260000000
*69000000005290000000731d00000053686f756c646e27742062652061626c6520746f20676574
*206865726569010000004e280b000000740f000000636f6d6d616e645f6f7074696f6e73522700
*00005262000000740f0000006765745f636f6d6d616e645f6f626a529000000052910000007406
*000000757064617465526b0000005241000000520d000000740a00000073657464656661756c74
*280b0000005246000000740100000064528c000000528d00000074030000006f707452c6000000
*740300000076616c7406000000636d646f626a74070000006e65675f6f707474030000006e6567
*7403000000706f732800000000280000000073280000006275696c645c62646973742e77696e33
*325c6567675c7365747570746f6f6c735c646973742e707974130000006765745f636d646c696e
*655f6f7074696f6e733f020000732e000000000a060210000c020d0012020d01070212020d010f
*010f0119010d000c010d0106010601090210020d010a021e026301000000060000000800000063
*00000073ab000000781d007c000069000070040001640400445d0b007d01007c01005601711100
*57781d007c000069010070040001640500445d0b007d02007c02005601713100577864007c0000
*69020070040001640600445d52007d03007403007c03007404008302006f1000017c03005c0200
*7d04007d05006e0a00017c03006905007d04007c04006906006401008301006f0e00017c040064
*0200207d04006e0100017c040056017151005764030053280700000073400000005969656c6420
*616c6c207061636b616765732c206d6f64756c65732c20616e6420657874656e73696f6e206e61
*6d657320696e20646973747269627574696f6e74060000006d6f64756c6569faffffff4e280000
*000028000000002800000000280700000052ae00000052af00000052b000000052330000007405
*0000007475706c65523a0000007408000000656e64737769746828060000005246000000740300
*0000706b6752d60000007403000000657874523a00000074090000006275696c64696e666f2800
*000000280000000073280000006275696c645c62646973742e77696e33325c6567675c73657475
*70746f6f6c735c646973742e707952b800000068020000731c0000000003110006010902110006
*0109021100060110011002090110010e014e281d00000074080000005f5f6e616d655f5f520a00
*000074070000005f5f646f635f5f5241000000524500000052490000005256000000525c000000
*5263000000525200000052690000005266000000526a000000525d00000052a600000052a80000
*00529200000052a100000052aa00000052ad00000052b7000000522000000052bc00000052ac00
*000052be00000052c000000052c400000052d500000052b8000000280000000028000000002800
*00000073280000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c
*735c646973742e707952000000007c0000007334000000064106020602090d0c16090709040908
*090b091e09290912090c090b09040904090b091609170912091309160917091209290929740700
*0000466561747572656300000000000000000600000042000000734a0000006500005a01006400
*005a02006503006504006504006406006407006401008405005a05006402008400005a06006403
*008400005a07006404008400005a08006405008400005a09005253280800000073160b00004120
*737562736574206f662074686520646973747269627574696f6e20746861742063616e20626520
*6578636c7564656420696620756e6e65656465642f77616e7465640a0a20202020466561747572
*6573206172652063726561746564207573696e67207468657365206b6579776f72642061726775
*6d656e74733a0a0a202020202020276465736372697074696f6e27202d2d20612073686f72742c
*2068756d616e207265616461626c65206465736372697074696f6e206f66207468652066656174
*7572652c20746f0a2020202020202020206265207573656420696e206572726f72206d65737361
*6765732c20616e64206f7074696f6e2068656c70206d657373616765732e0a0a20202020202027
*7374616e6461726427202d2d20696620747275652c20746865206665617475726520697320696e
*636c756465642062792064656661756c742069662069742069730a202020202020202020617661
*696c61626c65206f6e207468652063757272656e742073797374656d2e20204f74686572776973
*652c207468652066656174757265206973206f6e6c790a202020202020202020696e636c756465
*642069662072657175657374656420766961206120636f6d6d616e64206c696e6520272d2d7769
*74682d5827206f7074696f6e2c206f722069660a202020202020202020616e6f7468657220696e
*636c7564656420666561747572652072657175697265732069742e20205468652064656661756c
*742073657474696e67206973202746616c7365272e0a0a20202020202027617661696c61626c65
*27202d2d20696620747275652c20746865206665617475726520697320617661696c61626c6520
*666f7220696e7374616c6c6174696f6e206f6e207468650a20202020202020202063757272656e
*742073797374656d2e20205468652064656661756c742073657474696e67206973202754727565
*272e0a0a202020202020276f7074696f6e616c27202d2d20696620747275652c20746865206665
*6174757265277320696e636c7573696f6e2063616e20626520636f6e74726f6c6c65642066726f
*6d207468650a202020202020202020636f6d6d616e64206c696e652c207573696e672074686520
*272d2d776974682d5827206f7220272d2d776974686f75742d5827206f7074696f6e732e202049
*660a20202020202020202066616c73652c207468652066656174757265277320696e636c757369
*6f6e207374617475732069732064657465726d696e6564206175746f6d61746963616c6c792c0a
*2020202020202020206261736564206f6e2027617661696c6162696c65272c20277374616e6461
*7264272c20616e64207768657468657220616e79206f7468657220666561747572650a20202020
*202020202072657175697265732069742e20205468652064656661756c742073657474696e6720
*6973202754727565272e0a0a20202020202027726571756972655f666561747572657327202d2d
*206120737472696e67206f722073657175656e6365206f6620737472696e6773206e616d696e67
*2066656174757265730a202020202020202020746861742073686f756c6420616c736f20626520
*696e636c756465642069662074686973206665617475726520697320696e636c756465642e2020
*44656661756c747320746f0a202020202020202020656d707479206c6973742e20204d61792061
*6c736f20636f6e7461696e20275265717569726527206f626a6563747320746861742073686f75
*6c642062650a20202020202020202061646465642f72656d6f7665642066726f6d207468652064
*6973747269627574696f6e2e0a0a2020202020202772656d6f766527202d2d206120737472696e
*67206f72206c697374206f6620737472696e6773206e616d696e67207061636b6167657320746f
*2062652072656d6f7665640a20202020202020202066726f6d2074686520646973747269627574
*696f6e20696620746869732066656174757265206973202a6e6f742a20696e636c756465642e20
*204966207468650a20202020202020202066656174757265202a69732a20696e636c756465642c
*207468697320617267756d656e742069732069676e6f7265642e20205468697320617267756d65
*6e74206578697374730a202020202020202020746f20737570706f72742072656d6f76696e6720
*66656174757265732074686174202263726f737363757422206120646973747269627574696f6e
*2c20737563682061730a202020202020202020646566696e696e67206120277465737473272066
*65617475726520746861742072656d6f76657320616c6c20746865202774657374732720737562
*7061636b616765730a20202020202020202070726f7669646564206279206f7468657220666561
*74757265732e20205468652064656661756c7420666f72207468697320617267756d656e742069
*7320616e20656d7074790a2020202020202020206c6973742e2020284e6f74653a20746865206e
*616d6564207061636b616765287329206f72206d6f64756c6573206d7573742065786973742069
*6e2074686520626173650a202020202020202020646973747269627574696f6e207768656e2074
*6865202773657475702829272066756e6374696f6e20697320696e697469616c6c792063616c6c
*65642e290a0a2020202020206f74686572206b6579776f726473202d2d20616e79206f74686572
*206b6579776f726420617267756d656e7473206172652073617665642c20616e64207061737365
*6420746f0a20202020202020202074686520646973747269627574696f6e27732027696e636c75
*646528292720616e6420276578636c756465282927206d6574686f6473207768656e207468650a
*2020202020202020206665617475726520697320696e636c75646564206f72206578636c756465
*642c20726573706563746976656c792e2020536f2c20666f72206578616d706c652c20796f750a
*202020202020202020636f756c64207061737320277061636b616765733d5b2261222c2262225d
*2720746f206361757365207061636b616765732027612720616e642027622720746f2062650a20
*20202020202020206164646564206f722072656d6f7665642066726f6d20746865206469737472
*69627574696f6e20617320617070726f7072696174652e0a0a2020202041206665617475726520
*6d75737420696e636c756465206174206c65617374206f6e6520277265717569726573272c2027
*72656d6f7665272c206f72206f746865720a202020206b6579776f726420617267756d656e742e
*20204f74686572776973652c2069742063616e2774206166666563742074686520646973747269
*627574696f6e20696e20616e79207761792e0a202020204e6f746520616c736f20746861742079
*6f752063616e20737562636c6173732027466561747572652720746f2063726561746520796f75
*72206f776e207370656369616c697a65640a202020206665617475726520747970657320746861
*74206d6f646966792074686520646973747269627574696f6e20696e206f746865722077617973
*207768656e20696e636c75646564206f720a202020206578636c756465642e2020536565207468
*6520646f63737472696e677320666f722074686520766172696f7573206d6574686f6473206865
*726520666f72206d6f72652064657461696c2e0a2020202041736964652066726f6d2074686520
*6d6574686f64732c20746865206f6e6c7920666561747572652061747472696275746573207468
*617420646973747269627574696f6e73206c6f6f6b0a2020202061742061726520276465736372
*697074696f6e2720616e6420276f7074696f6e616c272e0a2020202063070000000c0000000700
*00004b00000073240100007c01007c00005f00007c02007c00005f01007c03007c00005f02007c
*04007c00005f03007404007c05007405007406006602008302006f0d00017c05006601007d0500
*6e010001670000047d08007c0500445d21007d09007404007c09007405008302006f0b00017c08
*007c090012715200017152007e08007c00005f0700670000047d0a007c0500445d21007d090074
*04007c0900740500830200700b00017c0a007c090012718a0001718a007e0a007d0b007c0b006f
*0e00017c0b007c07006401003c6e0100017404007c06007405008302006f0d00017c0600660100
*7d06006e0100017c06007c00005f08007c07007c00005f09007c06000c6f2000017c05000c6f18
*00017c07000c6f100001740a006402008301008201006e0100016400005328030000004e524e00
*00007367000000466561747572652025733a206d75737420646566696e65202772657175697265
*5f6665617475726573272c202772656d6f7665272c206f72206174206c65617374206f6e65206f
*6620277061636b61676573272c202770795f6d6f64756c6573272c206574632e280b0000005295
*00000074080000007374616e646172647409000000617661696c61626c65529400000052330000
*0052370000005201000000524e000000740600000072656d6f766552130000005207000000280c
*0000005246000000529500000052df00000052e00000005294000000524e00000052e100000052
*1300000052b300000074010000007252b500000074020000006572280000000028000000007328
*0000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c646973
*742e70795256000000c302000073220000000004090109010901090116010d033802350107000e
*0210010d010901090218010301630100000001000000010000004300000073110000007c000069
*00006f0700017c0000690100532801000000732b00000053686f756c6420746869732066656174
*75726520626520696e636c756465642062792064656661756c743f280200000052e000000052df
*000000280100000052460000002800000000280000000073280000006275696c645c6264697374
*2e77696e33325c6567675c7365747570746f6f6c735c646973742e70795296000000df02000073
*020000000002630200000003000000030000004300000073560000007c00006900007017000174
*01007c0000690200640100178301008201006e0100017c01006903007c00006904008d00000178
*1e007c0000690500445d13007d02007c01006906007c020083010001713b005764020053280300
*0000731b010000456e73757265206665617475726520616e642069747320726571756972656d65
*6e74732061726520696e636c7564656420696e20646973747269627574696f6e0a0a2020202020
*202020596f75206d6179206f76657272696465207468697320696e206120737562636c61737320
*746f20706572666f726d206164646974696f6e616c206f7065726174696f6e73206f6e0a202020
*202020202074686520646973747269627574696f6e2e20204e6f74652074686174207468697320
*6d6574686f64206d61792062652063616c6c6564206d6f7265207468616e206f6e63650a202020
*202020202070657220666561747572652c20616e6420736f2073686f756c64206265206964656d
*706f74656e742e0a0a202020202020202073320000002069732072657175697265642c62757420
*6973206e6f7420617661696c61626c65206f6e207468697320706c6174666f726d4e2807000000
*52e00000005206000000529500000052ad0000005213000000524e00000052aa00000028030000
*00524600000052170000007401000000662800000000280000000073280000006275696c645c62
*646973742e77696e33325c6567675c7365747570746f6f6c735c646973742e707952a2000000e3
*020000730e000000000a0a010301140410020a0006016302000000030000000300000043000000
*73430000007c01006900007c00006901008d0000017c00006902006f2500017822007c00006902
*00445d13007d02007c01006903007c020083010001712400576e01000164010053280200000073
*32010000456e737572652066656174757265206973206578636c756465642066726f6d20646973
*747269627574696f6e0a0a2020202020202020596f75206d6179206f7665727269646520746869
*7320696e206120737562636c61737320746f20706572666f726d206164646974696f6e616c206f
*7065726174696f6e73206f6e0a202020202020202074686520646973747269627574696f6e2e20
*2054686973206d6574686f642077696c6c2062652063616c6c6564206174206d6f7374206f6e63
*65207065720a2020202020202020666561747572652c20616e64206f6e6c792061667465722061
*6c6c20696e636c756465642066656174757265732068617665206265656e2061736b656420746f
*0a2020202020202020696e636c756465207468656d73656c7665732e0a20202020202020204e28
*0400000052be000000521300000052e100000052b7000000280300000052460000005217000000
*52bb0000002800000000280000000073280000006275696c645c62646973742e77696e33325c65
*67675c7365747570746f6f6c735c646973742e707952a3000000fa020000730a000000000a1002
*0a010a000601630200000003000000060000004300000073480000007841007c0000690000445d
*36007d02007c01006901007c0200830100702000017402006401007c00006903007c02007c0200
*66030016830100820100710a0001710a005764020053280300000073e701000056657269667920
*746861742066656174757265206d616b65732073656e736520696e20636f6e74657874206f6620
*646973747269627574696f6e0a0a202020202020202054686973206d6574686f64206973206361
*6c6c65642062792074686520646973747269627574696f6e206a757374206265666f7265206974
*20706172736573206974730a2020202020202020636f6d6d616e64206c696e652e202049742063
*6865636b7320746f20656e73757265207468617420746865202772656d6f766527206174747269
*627574652c20696620616e792c0a2020202020202020636f6e7461696e73206f6e6c792076616c
*6964207061636b6167652f6d6f64756c65206e616d65732074686174206172652070726573656e
*7420696e2074686520626173650a2020202020202020646973747269627574696f6e207768656e
*202773657475702829272069732063616c6c65642e2020596f75206d6179206f76657272696465
*20697420696e20610a2020202020202020737562636c61737320746f20706572666f726d20616e
*79206f746865722072657175697265642076616c69646174696f6e206f66207468652066656174
*7572650a2020202020202020616761696e73742061207461726765742064697374726962757469
*6f6e2e0a2020202020202020736700000025732077616e747320746f2062652061626c6520746f
*2072656d6f76652025732c206275742074686520646973747269627574696f6e20646f65736e27
*7420636f6e7461696e20616e79207061636b61676573206f72206d6f64756c657320756e646572
*2025734e280400000052e100000052200000005207000000529500000028030000005246000000
*521700000052bb0000002800000000280000000073280000006275696c645c62646973742e7769
*6e33325c6567675c7365747570746f6f6c735c646973742e707952930000000c030000730c0000
*00000c0a00060110010301030228000000002800000000280a00000052dc000000520a00000052
*dd000000528900000052880000005256000000529600000052a200000052a30000005293000000
*28000000002800000000280000000073280000006275696c645c62646973742e77696e33325c65
*67675c7365747570746f6f6c735c646973742e707952de00000091020000730e00000006310601
*0601121b090409170912282900000074070000005f5f616c6c5f5f740e00000064697374757469
*6c732e636f72655200000000525500000074120000007365747570746f6f6c732e646570656e64
*735201000000741a0000007365747570746f6f6c732e636f6d6d616e642e696e7374616c6c5202
*00000074180000007365747570746f6f6c732e636f6d6d616e642e73646973745203000000741e
*0000007365747570746f6f6c732e636f6d6d616e642e696e7374616c6c5f6c6962520400000074
*10000000646973747574696c732e6572726f727352050000005206000000520700000052080000
*0052100000005209000000740e000000646973747574696c732e64697374740d00000064697374
*7574696c732e636d645286000000740d000000646973747574696c732e6c6f67520f00000052d7
*000000522800000052b9000000521b000000521e0000005226000000522c000000522e00000052
*2f00000052320000005235000000523900000052170000007404000000636f7265528c00000052
*d600000052de00000028000000002800000000280000000073280000006275696c645c62646973
*742e77696e33325c6567675c7365747570746f6f6c735c646973742e707974080000003c6d6f64
*756c653e010000007338000000090210011001100110011001160110013c011802090e0c020c02
*090b09090911090f0906090909070904090f16ff00ff0001190006010d15
addfile ./setuptools-0.6c14devdev.egg/setuptools/extension.py
hunk ./setuptools-0.6c14devdev.egg/setuptools/extension.py 1
+from distutils.core import Extension as _Extension
+from dist import _get_unpatched
+_Extension = _get_unpatched(_Extension)
+
+try:
+    from Pyrex.Distutils.build_ext import build_ext
+except ImportError:
+    have_pyrex = False
+else:
+    have_pyrex = True
+
+
+class Extension(_Extension):
+    """Extension that uses '.c' files in place of '.pyx' files"""
+
+    if not have_pyrex:
+        # convert .pyx extensions to .c
+        def __init__(self,*args,**kw):
+            _Extension.__init__(self,*args,**kw)
+            sources = []
+            for s in self.sources:
+                if s.endswith('.pyx'):
+                    sources.append(s[:-3]+'c')
+                else:
+                    sources.append(s)
+            self.sources = sources
+
+class Library(Extension):
+    """Just like a regular Extension, but built as a library instead"""
+
+import sys, distutils.core, distutils.extension
+distutils.core.Extension = Extension
+distutils.extension.Extension = Extension
+if 'distutils.command.build_ext' in sys.modules:
+    sys.modules['distutils.command.build_ext'].Extension = Extension
addfile ./setuptools-0.6c14devdev.egg/setuptools/extension.pyc
binary ./setuptools-0.6c14devdev.egg/setuptools/extension.pyc
oldhex
*
newhex
*d1f20d0a4c1ef84b6300000000000000000c0000004000000073f20000006400006401006b0000
*6c01005a0200016400006402006b03006c04005a0400016504006502008301005a020079140064
*00006403006b05006c06005a060001576e1900046507006a0a006f0d00010101016508005a0900
*6e08000158650a005a0900640400650200660100640500840000830000595a0100640600650100
*660100640700840000830000595a0b006400006408006b0c005a0c006400006408006b00005a0d
*006400006408006b0e005a0d00650100650d00690f005f0100650100650d006910005f01006409
*00650c006911006a06006f140001650100650c00691100640900195f01006e0100016408005328
*0a00000069ffffffff28010000007409000000457874656e73696f6e2801000000740e0000005f
*6765745f756e70617463686564280100000074090000006275696c645f65787452000000006300
*00000000000000010000004200000073220000006500005a01006400005a0200650300700d0001
*6401008400005a04006e010001525328020000007337000000457874656e73696f6e2074686174
*207573657320272e63272066696c657320696e20706c616365206f6620272e707978272066696c
*6573630100000005000000050000004f00000073700000007400006901007c00007c01007c0200
*8e0100016700007d03007847007c0000690200445d3c007d04007c04006903006401008301006f
*1900017c03006904007c0400640200206403001783010001712300017c03006904007c04008301
*0001712300577c03007c00005f02006400005328040000004e73040000002e70797869fdffffff
*7401000000632805000000740a0000005f457874656e73696f6e74080000005f5f696e69745f5f
*7407000000736f75726365737408000000656e6473776974687406000000617070656e64280500
*0000740400000073656c6674040000006172677374020000006b77520600000074010000007328
*000000002800000000732d0000006275696c645c62646973742e77696e33325c6567675c736574
*7570746f6f6c735c657874656e73696f6e2e707952050000001200000073100000000001130106
*010a000601100119021101280500000074080000005f5f6e616d655f5f740a0000005f5f6d6f64
*756c655f5f74070000005f5f646f635f5f740a000000686176655f707972657852050000002800
*00000028000000002800000000732d0000006275696c645c62646973742e77696e33325c656767
*5c7365747570746f6f6c735c657874656e73696f6e2e707952000000000d000000730600000006
*010602070274070000004c6962726172796300000000000000000100000042000000730e000000
*6500005a01006400005a020052532801000000733d0000004a757374206c696b65206120726567
*756c617220457874656e73696f6e2c20627574206275696c742061732061206c69627261727920
*696e73746561642803000000520d000000520e000000520f000000280000000028000000002800
*000000732d0000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c
*735c657874656e73696f6e2e707952110000001c000000730200000006014e731b000000646973
*747574696c732e636f6d6d616e642e6275696c645f6578742812000000740e0000006469737475
*74696c732e636f7265520000000052040000007404000000646973745201000000741900000050
*797265782e446973747574696c732e6275696c645f6578745202000000740b000000496d706f72
*744572726f72740500000046616c73655210000000740400000054727565521100000074030000
*007379737409000000646973747574696c737413000000646973747574696c732e657874656e73
*696f6e7404000000636f72657409000000657874656e73696f6e74070000006d6f64756c657328
*0000000028000000002800000000732d0000006275696c645c62646973742e77696e33325c6567
*675c7365747570746f6f6c735c657874656e73696f6e2e707974080000003c6d6f64756c653e01
*000000731c000000100110010c02030114010e010b020603160f160324010c010c011001
addfile ./setuptools-0.6c14devdev.egg/setuptools/gui.exe
binary ./setuptools-0.6c14devdev.egg/setuptools/gui.exe
oldhex
*
newhex
*4d5a90000300000004000000ffff0000b800000000000000400000000000000000000000000000
*000000000000000000000000000000000000000000800000000e1fba0e00b409cd21b8014ccd21
*546869732070726f6772616d2063616e6e6f742062652072756e20696e20444f53206d6f64652e
*0d0d0a2400000000000000504500004c0105002e737d470000000000000000e0000f030b010238
*001000000008000000020000801200000010000000200000000040000010000000020000040000
*00010000000400000000000000006000000004000010cd00000200000000002000001000000000
*1000001000000000000010000000000000000000000000500000d4030000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000002e74657874000000400e00000010
*00000010000000040000000000000000000000000000200000602e646174610000003000000000
*2000000002000000140000000000000000000000000000400000c02e7264617461000050000000
*003000000002000000160000000000000000000000000000400000402e62737300000000700000
*00004000000000000000000000000000000000000000000000800000c02e69646174610000d403
*0000005000000004000000180000000000000000000000000000400000c0000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000005589e583ec18895df88b550831db8975fc8b0231f68b003d910000c077
*433d8d0000c0725bbe01000000c704240800000031d289542404e8c40c000083f801747a85c074
*0ec7042408000000ffd0bbffffffff89d88b75fc8b5df889ec5dc204003d940000c074c2774a3d
*930000c074b489d88b75fc8b5df889ec5dc20400903d050000c0745b3d1d0000c075c5c7042404
*00000031f689742404e8600c000083f801746a85c074aac7042404000000ffd0eb9a3d960000c0
*ebd1c7042408000000b901000000894c2404e8300c000085f60f8476ffffffe8630a0000e96cff
*ffffc704240b00000031c9894c2404e80c0c000083f801743085c00f8452ffffffc704240b0000
*00ffd0e93fffffffc7042404000000b80100000089442404e8dc0b0000e925ffffffc704240b00
*0000bb01000000895c2404e8c20b0000e90bffffff8db6000000008dbc27000000005589e55383
*ec248d5df8c7042400104000e84a0c000083ec04e8d2080000e8cd090000c745f800000000b800
*4040008d55f4895c24108b0d002040008944240489542408894c240cc7042404404000e88c0b00
*00a11040400085c07463a3102040008b151c51400085d20f859600000083fae07420a110404000
*894424048b1d1c5140008b4b30890c24e8410b00008b151c51400083fac074268b1d1040400089
*5c24048b0d1c5140008b5150891424e81b0b00008d7426008dbc2700000000e8fb0a00008b1d10
*2040008918e8ee07000083e4f0e8c60a00008b08894c24088b150040400089542404a104404000
*890424e8a906000089c3e8920a0000891c24e86a0b0000894424048b151c5140008b4210890424
*e8b50a00008b151c514000e94affffff8d76008dbc27000000005589e583ec08c7042401000000
*ff1514514000e8b8feffff908db426000000005589e583ec08c7042402000000ff1514514000e8
*98feffff908db42600000000558b0d3051400089e55dffe18d742600558b0d2451400089e55dff
*e1909090905589e583ec188b450c894424088b450889442404a11c51400083c040890424e89c0a
*0000b802000000c9c35589e557565383ec0c8b750889f7fcb9ffffffffb000f2aef7d18d79ffc7
*442404010000008d443f03890424e8540a00008945f0c6002289c242b900000000bb0000000039
*f97d33803c1e5c750341eb1e803c1e22751385c97e09c6025c424985c97ff7c6025c42eb05b900
*0000000fb6041e8802424339fb7ccd85c97e09c6025c424985c97ff7c60222c64201008b45f083
*c40c5b5e5f5dc35589e5565383ec10c744240808000000c7442404000000008b4508890424e808
*0a000083ec0c89c6b80000000085f6743ec744240401000000c7042404010000e8a609000089c3
*85c07417c74424080401000089442404893424e8dc09000083ec0c893424e8e109000083ec0489
*d88d65f85b5e5dc35589e557565381ec4c0400008b75088d5e010fb61684d2741380fa2f7504c6
*43ff5c0fb6034388c284c075ed8d85d8fcffff894424108d85d8fdffff8944240c8d85d8feffff
*894424088d45d889442404893424e80c090000807dd800750980bdd8feffff5c750d893424e81a
*ffffffe9990000008d85d8fcffff894424108d85d8fdffff8944240c8d9dd8feffff895c24088d
*45d8894424048b450c890424e8c008000089dffcb9ffffffffb000f2aef7d18d5c19fe803b5c75
*064b803b5c74198d85d8feffff89c239d8770dc603004b803b5c740439da76f3c7442410000000
*008974240c8d85d8feffff894424088d45d8894424048d9dc8fbffff891c24e84f080000891c24
*e87cfeffff81c44c0400005b5e5f5dc35589e557565383ec1c8b5d0889dffcb9ffffffffb000f2
*aef7d149c744240404000000890c24e8310800008945f089debf00000000c745e8000000008b45
*0cc700000000008b55f0891aeb01430fbe03890424e8d407000085c075f00fb603438845ef84c0
*74150fbec0890424e8ba07000085c07447837de800754185ff7407c6065c464f75f9c60600468b
*550c8b024089028b55f0893482807def00750589d0eb65430fbe03890424e87d07000085c075f0
*803b0075a48b45f0eb4b807def5c750347eb96807def22751bf7c7010000007511837de8000f94
*c00fb6c08945e8c645ef00d1ff85ff7407c6065c464f75f9807def000f8460ffffff0fb645ef88
*0646e954ffffff83c41c5b5e5f5dc35589e557565381ec2c020000c7442408000100008d9de8fd
*ffff895c2404c7042400000000e87207000083ec0c89dffcb9ffffffffb000f2aef7d18d7419ff
*39f37314803e2e740f89d8c606004e39f07305803e2e75f3c606008db5e8fdffff89f7fcb9ffff
*ffffb000f2aef7d149c7040e2d736372c7440e046970742ec7440e0870797700c7442404000000
*00893424e8e605000089c383f8ff751589742404c7042400304000e8effbffffe9bf0100008db5
*e8feffffc74424080001000089742404890424e8a005000001c6891c24e8860500008dbde7feff
*ff4739f7730f803f00740a803f0a7405803f0d75ecc607008db5e8feffffbf10304000b9020000
*00fcf3a60f97c20f92c038c27425c785e8feffff23217079c785ecfeffff74686f6ec785f0feff
*ff2e657865c685f4feffff008d85e4fdffff894424048d85eafeffff890424e8a3fdffff8985dc
*fdffff8d85e8fdffff894424048b95dcfdffff8b02890424e86afcffff89c785c0751d8b95dcfd
*ffff8b0289442404c7042414304000e811fbffffe9e1000000c7442404040000008b45080385e4
*fdffff40890424e8a20500008985e0fdffff893c24e80ffbffff8b95e0fdffff890289d383c304
*be010000003bb5e4fdffff7d1f8b95dcfdffff8b04b2890424e8e4faffff890383c304463bb5e4
*fdffff7ce18d85e8fdffff890424e8c8faffff890383c304be010000003b75087d198b550c8b04
*b2890424e8abfaffff890383c304463b75087ce7c70300000000837d100074248b85e0fdffff89
*442404893c24e807040000897c2404c7042436304000e847faffffeb1a8b95e0fdffff89542408
*897c2404c7042400000000e8cb0300008d65f45b5e5f5dc35589e55383ec14e87704000089c3e8
*80040000c7442408010000008b13895424048b00890424e85cfdffff83c4145b5dc2100055b810
*00000089e55383ec6483e4f0e84c030000e8d7020000e8f204000089c38d45a8890424e8f50400
*0083ec0485db7506e99f000000430fb60b80f9200f94c080f9090f94c209d0a80175ea80f92274
*3e80f9200f95c031d280f9090f95c285d0744c8db6000000008dbf0000000084c9743c430fb60b
*80f9200f95c031d280f9090f95c285d075e6eb248d742600430fb60b80f9220f95c031d284c90f
*95c285d075eb80f92274688db60000000080f9200f94c080f9090f94c2eb126690430fb60b80f9
*200f94c280f9090f94c009d0a80175eac7042400000000e84e04000083ec04f645d401ba0a0000
*0074040fb755d8895c240831db895c24048954240c890424e8c3feffff83ec108b5dfcc9c3430f
*b60beb98909090909090909055b95030400089e5eb148db6000000008b51048b0183c108018200
*00400081f95030400072ea5dc390909090909090905589e5539c9c5889c23500002000509d9c58
*9d31d0a9000020000f84c000000031c00fa285c00f84b4000000b8010000000fa2f6c6010f85a7
*00000089d381e3008000006685db7407830d2040400002f7c2000080007407830d2040400004f7
*c2000000017407830d2040400008f7c2000000027407830d204040001081e2000000047407830d
*2040400020f6c1017407830d2040400040f6c520740a810d2040400080000000b8000000800fa2
*3d00000080762bb8010000800fa2a12040400089c181c90001000081e200000040741e0d000300
*00a320404000908d7426005b5dc3830d2040400001e94dffffff5b890d204040005dc390909090
*909090905589e5dbe35dc39090909090909090905589e583ec08a1202040008338007417ff108b
*0d202040008b51048d4104a32020400085d275e9c9c38db426000000005589e55383ec04a1301e
*400083f8ff742985c089c3741389f68dbc2700000000ff149d301e40004b75f6c70424501b4000
*e80af7ffff595b5dc331c0833d341e400000eb0a408b1c85341e400085db75f4ebbe8db6000000
*008dbc27000000005589e55383ec048b1d3040400085db7535a1301e4000b901000000890d3040
*400083f8ff742485c089c3740e8d742600ff149d301e40004b75f6c70424501b4000e89af6ffff
*585b5dc331c0833d341e400000eb0a408b1485341e400085d275f4ebc390909090909090909090
*9090905189e183c1083d00100000721081e9001000008309002d00100000ebe929c183090089e0
*89cc8b088b4004ffe0909090ff25f450400090900000000000000000ff25e85040009090000000
*0000000000ff25e450400090900000000000000000ff25f050400090900000000000000000ff25
*ec50400090900000000000000000ff251451400090900000000000000000ff2518514000909000
*00000000000000ff250c51400090900000000000000000ff254051400090900000000000000000
*ff251051400090900000000000000000ff252851400090900000000000000000ff250051400090
*900000000000000000ff250851400090900000000000000000ff25045140009090000000000000
*0000ff253c51400090900000000000000000ff252051400090900000000000000000ff252c5140
*0090900000000000000000ff253451400090900000000000000000ff2538514000909000000000
*00000000ff256851400090900000000000000000ff254c51400090900000000000000000ff2564
*51400090900000000000000000ff255851400090900000000000000000ff255051400090900000
*000000000000ff255451400090900000000000000000ff256051400090900000000000000000ff
*255c51400090900000000000000000ffffffff00000000ffffffff000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*0000000000000000000000ffffffff000000000000000000000000004000000000000000000000
*000000003c1e400000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*0000000000000000000000000000000043616e6e6f74206f70656e2025730a002321000043616e
*6e6f742066696e6420507974686f6e2065786563757461626c652025730a00436f756c64206e6f
*742065786563202573000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*000000000000000000000000000000000000000000000000000000000000000000000000000000
*00000000000000000000000000000000000000000054500000000000000000000048530000e450
*00007050000000000000000000009853000000510000bc5000000000000000000000c45300004c
*510000000000000000000000000000000000000000000000000000705100007c51000088510000
*90510000985100000000000000000000a4510000b4510000c4510000d4510000e4510000f45100
*0008520000145200001c520000285200003452000040520000505200005c520000685200007452
*00008052000000000000000000008c5200009c520000ac520000c0520000d8520000ec52000000
*530000145300000000000000000000705100007c51000088510000905100009851000000000000
*00000000a4510000b4510000c4510000d4510000e4510000f451000008520000145200001c5200
*00285200003452000040520000505200005c520000685200007452000080520000000000000000
*00008c5200009c520000ac520000c0520000d8520000ec52000000530000145300000000000006
*005f636c6f73650000000012005f6578656376000000003a005f6f70656e0040005f7265616400
*4b005f737061776e7600000027005f5f6765746d61696e617267730031005f5f705f5f5f617267
*630000000032005f5f705f5f5f61726776000000003c005f5f705f5f656e7669726f6e00003e00
*5f5f705f5f666d6f64650000000050005f5f7365745f6170705f747970650000000079005f6365
*78697400000000e9005f696f6200001f015f6d616b6570617468005e015f6f6e65786974000000
*84015f7365746d6f6465000092015f73706c697470617468000000001c02617465786974000000
*00210263616c6c6f63000000003902667072696e74660000005a02697373706163650000009002
*7369676e616c000000009b004578697450726f63657373000000d500467265654c696272617279
*000000ec00476574436f6d6d616e644c696e65410000004d014765744d6f64756c6546696c654e
*616d6541000000004f014765744d6f64756c6548616e646c654100008001476574537461727475
*70496e666f410000000b024c6f61644c69627261727945784100000000e002536574556e68616e
*646c6564457863657074696f6e46696c7465720000000050000000500000005000000050000000
*5000006d73766372742e646c6c0000145000001450000014500000145000001450000014500000
*145000001450000014500000145000001450000014500000145000001450000014500000145000
*00145000006d73766372742e646c6c000028500000285000002850000028500000285000002850
*000028500000285000004b45524e454c33322e646c6c0000000000000000000000000000000000
*00000000000000000000000000000000000000000000000000000000000000
addfile ./setuptools-0.6c14devdev.egg/setuptools/package_index.py
hunk ./setuptools-0.6c14devdev.egg/setuptools/package_index.py 1
+"""PyPI and direct package downloading"""
+import sys, os.path, re, urlparse, urllib2, shutil, random, socket, cStringIO
+from pkg_resources import *
+from distutils import log
+from distutils.errors import DistutilsError
+try:
+    from hashlib import md5
+except ImportError:
+    from md5 import md5
+from fnmatch import translate
+
+EGG_FRAGMENT = re.compile(r'^egg=([-A-Za-z0-9_.]+)$')
+HREF = re.compile("""href\\s*=\\s*['"]?([^'"> ]+)""", re.I)
+# this is here to fix emacs' cruddy broken syntax highlighting
+PYPI_MD5 = re.compile(
+    '<a href="([^"#]+)">([^<]+)</a>\n\s+\\(<a (?:title="MD5 hash"\n\s+)'
+    'href="[^?]+\?:action=show_md5&amp;digest=([0-9a-f]{32})">md5</a>\\)'
+)
+URL_SCHEME = re.compile('([-+.a-z0-9]{2,}):',re.I).match
+EXTENSIONS = ".tar.gz .tar.bz2 .tar .zip .tgz".split()
+
+__all__ = [
+    'PackageIndex', 'distros_for_url', 'parse_bdist_wininst',
+    'interpret_distro_name',
+]
+
+def parse_bdist_wininst(name):
+    """Return (base,pyversion) or (None,None) for possible .exe name"""
+
+    lower = name.lower()
+    base, py_ver = None, None
+
+    if lower.endswith('.exe'):
+        if lower.endswith('.win32.exe'):
+            base = name[:-10]
+        elif lower.startswith('.win32-py',-16):
+            py_ver = name[-7:-4]
+            base = name[:-16]
+
+    return base,py_ver
+
+def egg_info_for_url(url):
+    scheme, server, path, parameters, query, fragment = urlparse.urlparse(url)
+    base = urllib2.unquote(path.split('/')[-1])
+    if '#' in base: base, fragment = base.split('#',1)
+    return base,fragment
+
+def distros_for_url(url, metadata=None):
+    """Yield egg or source distribution objects that might be found at a URL"""
+    base, fragment = egg_info_for_url(url)
+    for dist in distros_for_location(url, base, metadata): yield dist
+    if fragment:
+        match = EGG_FRAGMENT.match(fragment)
+        if match:
+            for dist in interpret_distro_name(
+                url, match.group(1), metadata, precedence = CHECKOUT_DIST
+            ):
+                yield dist
+
+def distros_for_location(location, basename, metadata=None):
+    """Yield egg or source distribution objects based on basename"""
+    if basename.endswith('.egg.zip'):
+        basename = basename[:-4]    # strip the .zip
+    if basename.endswith('.egg') and '-' in basename:
+        # only one, unambiguous interpretation
+        return [Distribution.from_location(location, basename, metadata)]
+
+    if basename.endswith('.exe'):
+        win_base, py_ver = parse_bdist_wininst(basename)
+        if win_base is not None:
+            return interpret_distro_name(
+                location, win_base, metadata, py_ver, BINARY_DIST, "win32"
+            )
+
+    # Try source distro extensions (.zip, .tgz, etc.)
+    #
+    for ext in EXTENSIONS:
+        if basename.endswith(ext):
+            basename = basename[:-len(ext)]
+            return interpret_distro_name(location, basename, metadata)
+    return []  # no extension matched
+
+def distros_for_filename(filename, metadata=None):
+    """Yield possible egg or source distribution objects based on a filename"""
+    return distros_for_location(
+        normalize_path(filename), os.path.basename(filename), metadata
+    )
+
+
+def interpret_distro_name(location, basename, metadata,
+    py_version=None, precedence=SOURCE_DIST, platform=None
+):
+    """Generate alternative interpretations of a source distro name
+
+    Note: if `location` is a filesystem filename, you should call
+    ``pkg_resources.normalize_path()`` on it before passing it to this
+    routine!
+    """
+    # Generate alternative interpretations of a source distro name
+    # Because some packages are ambiguous as to name/versions split
+    # e.g. "adns-python-1.1.0", "egenix-mx-commercial", etc.
+    # So, we generate each possible interepretation (e.g. "adns, python-1.1.0"
+    # "adns-python, 1.1.0", and "adns-python-1.1.0, no version").  In practice,
+    # the spurious interpretations should be ignored, because in the event
+    # there's also an "adns" package, the spurious "python-1.1.0" version will
+    # compare lower than any numeric version number, and is therefore unlikely
+    # to match a request for it.  It's still a potential problem, though, and
+    # in the long run PyPI and the distutils should go for "safe" names and
+    # versions in distribution archive names (sdist and bdist).
+
+    parts = basename.split('-')
+    if not py_version:
+        for i,p in enumerate(parts[2:]):
+            if len(p)==5 and p.startswith('py2.'):
+                return # It's a bdist_dumb, not an sdist -- bail out
+
+    for p in range(1,len(parts)+1):
+        yield Distribution(
+            location, metadata, '-'.join(parts[:p]), '-'.join(parts[p:]),
+            py_version=py_version, precedence = precedence,
+            platform = platform
+        )
+
+REL = re.compile("""<([^>]*\srel\s*=\s*['"]?([^'">]+)[^>]*)>""", re.I)
+# this line is here to fix emacs' cruddy broken syntax highlighting
+
+def find_external_links(url, page):
+    """Find rel="homepage" and rel="download" links in `page`, yielding URLs"""
+
+    for match in REL.finditer(page):
+        tag, rel = match.groups()
+        rels = map(str.strip, rel.lower().split(','))
+        if 'homepage' in rels or 'download' in rels:
+            for match in HREF.finditer(tag):
+                yield urlparse.urljoin(url, htmldecode(match.group(1)))
+
+    for tag in ("<th>Home Page", "<th>Download URL"):
+        pos = page.find(tag)
+        if pos!=-1:
+            match = HREF.search(page,pos)
+            if match:
+                yield urlparse.urljoin(url, htmldecode(match.group(1)))
+
+user_agent = "Python-urllib/%s setuptools/%s" % (
+    urllib2.__version__, require('setuptools')[0].version
+)
+
+
+class PackageIndex(Environment):
+    """A distribution index that scans web pages for download URLs"""
+
+    def __init__(self, index_url="http://pypi.python.org/simple", hosts=('*',),
+        *args, **kw
+    ):
+        Environment.__init__(self,*args,**kw)
+        self.index_url = index_url + "/"[:not index_url.endswith('/')]
+        self.scanned_urls = {}
+        self.fetched_urls = {}
+        self.package_pages = {}
+        self.allows = re.compile('|'.join(map(translate,hosts))).match
+        self.to_scan = []
+
+
+
+    def process_url(self, url, retrieve=False):
+        """Evaluate a URL as a possible download, and maybe retrieve it"""
+        if url in self.scanned_urls and not retrieve:
+            return
+        self.scanned_urls[url] = True
+        if not URL_SCHEME(url):
+            self.process_filename(url)
+            return
+        else:
+            dists = list(distros_for_url(url))
+            if dists:
+                if not self.url_ok(url):
+                    return
+                self.debug("Found link: %s", url)
+
+        if dists or not retrieve or url in self.fetched_urls:
+            map(self.add, dists)
+            return  # don't need the actual page
+
+        if not self.url_ok(url):
+            self.fetched_urls[url] = True
+            return
+
+        self.info("Reading %s", url)
+        f = self.open_url(url, "Download error: %s -- Some packages may not be found!")
+        if f is None: return
+        self.fetched_urls[url] = self.fetched_urls[f.url] = True
+
+        if 'html' not in f.headers.get('content-type', '').lower():
+            f.close()   # not html, we can't process it
+            return
+
+        base = f.url     # handle redirects
+        page = f.read()
+        f.close()
+        if url.startswith(self.index_url) and getattr(f,'code',None)!=404:
+            page = self.process_index(url, page)
+        for match in HREF.finditer(page):
+            link = urlparse.urljoin(base, htmldecode(match.group(1)))
+            self.process_url(link)
+
+    def process_filename(self, fn, nested=False):
+        # process filenames or directories
+        if not os.path.exists(fn):
+            self.warn("Not found: %s", fn)
+            return
+
+        if os.path.isdir(fn) and not nested:
+            path = os.path.realpath(fn)
+            for item in os.listdir(path):
+                self.process_filename(os.path.join(path,item), True)
+
+        dists = distros_for_filename(fn)
+        if dists:
+            self.debug("Found: %s", fn)
+            map(self.add, dists)
+
+    def url_ok(self, url, fatal=False):
+        if self.allows(urlparse.urlparse(url)[1]):
+            return True
+        msg = "\nLink to % s ***BLOCKED*** by --allow-hosts\n"
+        if fatal:
+            raise DistutilsError(msg % url)
+        else:
+            self.warn(msg, url)
+
+    def scan_egg_links(self, search_path):
+        for item in search_path:
+            if os.path.isdir(item):
+                for entry in os.listdir(item):
+                    if entry.endswith('.egg-link'):
+                        self.scan_egg_link(item, entry)
+
+    def scan_egg_link(self, path, entry):
+        lines = filter(None, map(str.strip, file(os.path.join(path, entry))))
+        if len(lines)==2:
+            for dist in find_distributions(os.path.join(path, lines[0])):
+                dist.location = os.path.join(path, *lines)
+                dist.precedence = SOURCE_DIST
+                self.add(dist)
+
+
+    def process_index(self,url,page):
+        """Process the contents of a PyPI page"""
+        def scan(link):
+            # Process a URL to see if it's for a package page
+            if link.startswith(self.index_url):
+                parts = map(
+                    urllib2.unquote, link[len(self.index_url):].split('/')
+                )
+                if len(parts)==2 and '#' not in parts[1]:
+                    # it's a package page, sanitize and index it
+                    pkg = safe_name(parts[0])
+                    ver = safe_version(parts[1])
+                    self.package_pages.setdefault(pkg.lower(),{})[link] = True
+                    return to_filename(pkg), to_filename(ver)
+            return None, None
+
+        # process an index page into the package-page index
+        for match in HREF.finditer(page):
+            scan( urlparse.urljoin(url, htmldecode(match.group(1))) )
+
+        pkg, ver = scan(url)   # ensure this page is in the page index
+        if pkg:
+            # process individual package page
+            for new_url in find_external_links(url, page):
+                # Process the found URL
+                base, frag = egg_info_for_url(new_url)
+                if base.endswith('.py') and not frag:
+                    if ver:
+                        new_url+='#egg=%s-%s' % (pkg,ver)
+                    else:
+                        self.need_version_info(url)
+                self.scan_url(new_url)
+
+            return PYPI_MD5.sub(
+                lambda m: '<a href="%s#md5=%s">%s</a>' % m.group(1,3,2), page
+            )
+        else:
+            return ""   # no sense double-scanning non-package pages
+
+
+
+    def need_version_info(self, url):
+        self.scan_all(
+            "Page at %s links to .py file(s) without version info; an index "
+            "scan is required.", url
+        )
+
+    def scan_all(self, msg=None, *args):
+        if self.index_url not in self.fetched_urls:
+            if msg: self.warn(msg,*args)
+            self.info(
+                "Scanning index of all packages (this may take a while)"
+            )
+        self.scan_url(self.index_url)
+
+    def find_packages(self, requirement):
+        self.scan_url(self.index_url + requirement.unsafe_name+'/')
+
+        if not self.package_pages.get(requirement.key):
+            # Fall back to safe version of the name
+            self.scan_url(self.index_url + requirement.project_name+'/')
+
+        if not self.package_pages.get(requirement.key):
+            # We couldn't find the target package, so search the index page too
+            self.not_found_in_index(requirement)
+
+        for url in list(self.package_pages.get(requirement.key,())):
+            # scan each page that might be related to the desired package
+            self.scan_url(url)
+
+    def obtain(self, requirement, installer=None):
+        self.prescan(); self.find_packages(requirement)
+        for dist in self[requirement.key]:
+            if dist in requirement:
+                return dist
+            self.debug("%s does not match %s", requirement, dist)
+        return super(PackageIndex, self).obtain(requirement,installer)
+
+
+
+
+
+    def check_md5(self, cs, info, filename, tfp):
+        if re.match('md5=[0-9a-f]{32}$', info):
+            self.debug("Validating md5 checksum for %s", filename)
+            if cs.hexdigest()<>info[4:]:
+                tfp.close()
+                os.unlink(filename)
+                raise DistutilsError(
+                    "MD5 validation failed for "+os.path.basename(filename)+
+                    "; possible download problem?"
+                )
+
+    def add_find_links(self, urls):
+        """Add `urls` to the list that will be prescanned for searches"""
+        for url in urls:
+            if (
+                self.to_scan is None        # if we have already "gone online"
+                or not URL_SCHEME(url)      # or it's a local file/directory
+                or url.startswith('file:')
+                or list(distros_for_url(url))   # or a direct package link
+            ):
+                # then go ahead and process it now
+                self.scan_url(url)
+            else:
+                # otherwise, defer retrieval till later
+                self.to_scan.append(url)
+
+    def prescan(self):
+        """Scan urls scheduled for prescanning (e.g. --find-links)"""
+        if self.to_scan:
+            map(self.scan_url, self.to_scan)
+        self.to_scan = None     # from now on, go ahead and process immediately
+
+    def not_found_in_index(self, requirement):
+        if self[requirement.key]:   # we've seen at least one distro
+            meth, msg = self.info, "Couldn't retrieve index page for %r"
+        else:   # no distros seen for this name, might be misspelled
+            meth, msg = (self.warn,
+                "Couldn't find index page for %r (maybe misspelled?)")
+        meth(msg, requirement.unsafe_name)
+        self.scan_all()
+
+    def download(self, spec, tmpdir):
+        """Locate and/or download `spec` to `tmpdir`, returning a local path
+
+        `spec` may be a ``Requirement`` object, or a string containing a URL,
+        an existing local filename, or a project/version requirement spec
+        (i.e. the string form of a ``Requirement`` object).  If it is the URL
+        of a .py file with an unambiguous ``#egg=name-version`` tag (i.e., one
+        that escapes ``-`` as ``_`` throughout), a trivial ``setup.py`` is
+        automatically created alongside the downloaded file.
+
+        If `spec` is a ``Requirement`` object or a string containing a
+        project/version requirement spec, this method returns the location of
+        a matching distribution (possibly after downloading it to `tmpdir`).
+        If `spec` is a locally existing file or directory name, it is simply
+        returned unchanged.  If `spec` is a URL, it is downloaded to a subpath
+        of `tmpdir`, and the local filename is returned.  Various errors may be
+        raised if a problem occurs during downloading.
+        """
+        if not isinstance(spec,Requirement):
+            scheme = URL_SCHEME(spec)
+            if scheme:
+                # It's a url, download it to tmpdir
+                found = self._download_url(scheme.group(1), spec, tmpdir)
+                base, fragment = egg_info_for_url(spec)
+                if base.endswith('.py'):
+                    found = self.gen_setup(found,fragment,tmpdir)
+                return found
+            elif os.path.exists(spec):
+                # Existing file or directory, just return it
+                return spec
+            else:
+                try:
+                    spec = Requirement.parse(spec)
+                except ValueError:
+                    raise DistutilsError(
+                        "Not a URL, existing file, or requirement spec: %r" %
+                        (spec,)
+                    )
+        return getattr(self.fetch_distribution(spec, tmpdir),'location',None)
+
+
+    def fetch_distribution(self,
+        requirement, tmpdir, force_scan=False, source=False, develop_ok=False
+    ):
+        """Obtain a distribution suitable for fulfilling `requirement`
+
+        `requirement` must be a ``pkg_resources.Requirement`` instance.
+        If necessary, or if the `force_scan` flag is set, the requirement is
+        searched for in the (online) package index as well as the locally
+        installed packages.  If a distribution matching `requirement` is found,
+        the returned distribution's ``location`` is the value you would have
+        gotten from calling the ``download()`` method with the matching
+        distribution's URL or filename.  If no matching distribution is found,
+        ``None`` is returned.
+
+        If the `source` flag is set, only source distributions and source
+        checkout links will be considered.  Unless the `develop_ok` flag is
+        set, development and system eggs (i.e., those using the ``.egg-info``
+        format) will be ignored.
+        """
+
+        # process a Requirement
+        self.info("Searching for %s", requirement)
+        skipped = {}
+
+        def find(req):
+            # Find a matching distribution; may be called more than once
+
+            for dist in self[req.key]:
+
+                if dist.precedence==DEVELOP_DIST and not develop_ok:
+                    if dist not in skipped:
+                        self.warn("Skipping development or system egg: %s",dist)
+                        skipped[dist] = 1
+                    continue
+
+                if dist in req and (dist.precedence<=SOURCE_DIST or not source):
+                    self.info("Best match: %s", dist)
+                    return dist.clone(
+                        location=self.download(dist.location, tmpdir)
+                    )
+
+        if force_scan:
+            self.prescan()
+            self.find_packages(requirement)
+
+        dist = find(requirement)
+        if dist is None and self.to_scan is not None:
+            self.prescan()
+            dist = find(requirement)
+
+        if dist is None and not force_scan:
+            self.find_packages(requirement)
+            dist = find(requirement)
+
+        if dist is None:
+            self.warn(
+                "No local packages or download links found for %s%s",
+                (source and "a source distribution of " or ""),
+                requirement,
+            )
+        return dist
+
+    def fetch(self, requirement, tmpdir, force_scan=False, source=False):
+        """Obtain a file suitable for fulfilling `requirement`
+
+        DEPRECATED; use the ``fetch_distribution()`` method now instead.  For
+        backward compatibility, this routine is identical but returns the
+        ``location`` of the downloaded distribution instead of a distribution
+        object.
+        """
+        dist = self.fetch_distribution(requirement,tmpdir,force_scan,source)
+        if dist is not None:
+            return dist.location
+        return None
+
+
+
+
+
+
+
+
+    def gen_setup(self, filename, fragment, tmpdir):
+        match = EGG_FRAGMENT.match(fragment)
+        dists = match and [d for d in
+            interpret_distro_name(filename, match.group(1), None) if d.version
+        ] or []
+
+        if len(dists)==1:   # unambiguous ``#egg`` fragment
+            basename = os.path.basename(filename)
+
+            # Make sure the file has been downloaded to the temp dir.
+            if os.path.dirname(filename) != tmpdir:
+                dst = os.path.join(tmpdir, basename)
+                from setuptools.command.easy_install import samefile
+                if not samefile(filename, dst):
+                    shutil.copy2(filename, dst)
+                    filename=dst
+
+            file = open(os.path.join(tmpdir, 'setup.py'), 'w')
+            file.write(
+                "from setuptools import setup\n"
+                "setup(name=%r, version=%r, py_modules=[%r])\n"
+                % (
+                    dists[0].project_name, dists[0].version,
+                    os.path.splitext(basename)[0]
+                )
+            )
+            file.close()
+            return filename
+
+        elif match:
+            raise DistutilsError(
+                "Can't unambiguously interpret project/version identifier %r; "
+                "any dashes in the name or version should be escaped using "
+                "underscores. %r" % (fragment,dists)
+            )
+        else:
+            raise DistutilsError(
+                "Can't process plain .py files without an '#egg=name-version'"
+                " suffix to enable automatic setup script generation."
+            )
+
+    dl_blocksize = 8192
+    def _download_to(self, url, filename):
+        self.info("Downloading %s", url)
+        # Download the file
+        fp, tfp, info = None, None, None
+        try:
+            if '#' in url:
+                url, info = url.split('#', 1)
+            fp = self.open_url(url)
+            if isinstance(fp, urllib2.HTTPError):
+                raise DistutilsError(
+                    "Can't download %s: %s %s" % (url, fp.code,fp.msg)
+                )
+            cs = md5()
+            headers = fp.info()
+            blocknum = 0
+            bs = self.dl_blocksize
+            size = -1
+            if "content-length" in headers:
+                size = int(headers["Content-Length"])
+                self.reporthook(url, filename, blocknum, bs, size)
+            tfp = open(filename,'wb')
+            while True:
+                block = fp.read(bs)
+                if block:
+                    cs.update(block)
+                    tfp.write(block)
+                    blocknum += 1
+                    self.reporthook(url, filename, blocknum, bs, size)
+                else:
+                    break
+            if info: self.check_md5(cs, info, filename, tfp)
+            return headers
+        finally:
+            if fp: fp.close()
+            if tfp: tfp.close()
+
+    def reporthook(self, url, filename, blocknum, blksize, size):
+        pass    # no-op
+
+
+    def open_url(self, url, warning=None):
+        if url.startswith('file:'):
+            return local_open(url)
+        try:
+            return open_with_auth(url)
+        except urllib2.HTTPError, v:
+            return v
+        except urllib2.URLError, v:
+            if warning: self.warn(warning, v.reason)
+            else:
+                raise DistutilsError("Download error for %s: %s"
+                                     % (url, v.reason))
+
+    def _download_url(self, scheme, url, tmpdir):
+        # Determine download filename
+        #
+        name = filter(None,urlparse.urlparse(url)[2].split('/'))
+        if name:
+            name = name[-1]
+            while '..' in name:
+                name = name.replace('..','.').replace('\\','_')
+        else:
+            name = "__downloaded__"    # default if URL has no path contents
+
+        if name.endswith('.egg.zip'):
+            name = name[:-4]    # strip the extra .zip before download
+
+        filename = os.path.join(tmpdir,name)
+
+        # Download the file
+        #
+        if scheme=='svn' or scheme.startswith('svn+'):
+            return self._download_svn(url, filename)
+        elif scheme=='file':
+            return urllib2.url2pathname(urlparse.urlparse(url)[2])
+        else:
+            self.url_ok(url, True)   # raises error if not allowed
+            return self._attempt_download(url, filename)
+
+
+
+    def scan_url(self, url):
+        self.process_url(url, True)
+
+
+    def _attempt_download(self, url, filename):
+        headers = self._download_to(url, filename)
+        if 'html' in headers.get('content-type','').lower():
+            return self._download_html(url, headers, filename)
+        else:
+            return filename
+
+    def _download_html(self, url, headers, filename):
+        file = open(filename)
+        for line in file:
+            if line.strip():
+                # Check for a subversion index page
+                if re.search(r'<title>([^- ]+ - )?Revision \d+:', line):
+                    # it's a subversion index page:
+                    file.close()
+                    os.unlink(filename)
+                    return self._download_svn(url, filename)
+                break   # not an index page
+        file.close()
+        os.unlink(filename)
+        raise DistutilsError("Unexpected HTML page found at "+url)
+
+    def _download_svn(self, url, filename):
+        url = url.split('#',1)[0]   # remove any fragment for svn's sake
+        self.info("Doing subversion checkout from %s to %s", url, filename)
+        os.system("svn checkout -q %s %s" % (url, filename))
+        return filename
+
+    def debug(self, msg, *args):
+        log.debug(msg, *args)
+
+    def info(self, msg, *args):
+        log.info(msg, *args)
+
+    def warn(self, msg, *args):
+        log.warn(msg, *args)
+
+# This pattern matches a character entity reference (a decimal numeric
+# references, a hexadecimal numeric reference, or a named reference).
+entity_sub = re.compile(r'&(#(\d+|x[\da-fA-F]+)|[\w.:-]+);?').sub
+
+def uchr(c):
+    if not isinstance(c, int):
+        return c
+    if c>255: return unichr(c)
+    return chr(c)
+
+def decode_entity(match):
+    what = match.group(1)
+    if what.startswith('#x'):
+        what = int(what[2:], 16)
+    elif what.startswith('#'):
+        what = int(what[1:])
+    else:
+        from htmlentitydefs import name2codepoint
+        what = name2codepoint.get(what, match.group(0))
+    return uchr(what)
+
+def htmldecode(text):
+    """Decode HTML entities in the given text."""
+    return entity_sub(decode_entity, text)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+def open_with_auth(url):
+    """Open a urllib2 request, handling HTTP authentication"""
+
+    scheme, netloc, path, params, query, frag = urlparse.urlparse(url)
+
+    if scheme in ('http', 'https'):
+        auth, host = urllib2.splituser(netloc)
+    else:
+        auth = None
+
+    if auth:
+        auth = "Basic " + urllib2.unquote(auth).encode('base64').strip()
+        new_url = urlparse.urlunparse((scheme,host,path,params,query,frag))
+        request = urllib2.Request(new_url)
+        request.add_header("Authorization", auth)
+    else:
+        request = urllib2.Request(url)
+
+    request.add_header('User-Agent', user_agent)
+    fp = urllib2.urlopen(request)
+
+    if auth:
+        # Put authentication info back into request URL if same host,
+        # so that links found on the page will work
+        s2, h2, path2, param2, query2, frag2 = urlparse.urlparse(fp.url)
+        if s2==scheme and h2==host:
+            fp.url = urlparse.urlunparse((s2,netloc,path2,param2,query2,frag2))
+
+    return fp
+
+
+
+
+
+
+
+
+
+
+
+
+def fix_sf_url(url):
+    return url      # backward compatibility
+
+def local_open(url):
+    """Read a local path, with special support for directories"""
+    scheme, server, path, param, query, frag = urlparse.urlparse(url)
+    filename = urllib2.url2pathname(path)
+    if os.path.isfile(filename):
+        return urllib2.urlopen(url)
+    elif path.endswith('/') and os.path.isdir(filename):
+        files = []
+        for f in os.listdir(filename):
+            if f=='index.html':
+                body = open(os.path.join(filename,f),'rb').read()
+                break
+            elif os.path.isdir(os.path.join(filename,f)):
+                f+='/'
+            files.append("<a href=%r>%s</a>" % (f,f))
+        else:
+            body = ("<html><head><title>%s</title>" % url) + \
+                "</head><body>%s</body></html>" % '\n'.join(files)
+        status, message = 200, "OK"
+    else:
+        status, message, body = 404, "Path not found", "Not found"
+
+    return urllib2.HTTPError(url, status, message,
+            {'content-type':'text/html'}, cStringIO.StringIO(body))
+
+
+
+
+
+
+
+
+
+
+
+
+
+# this line is a kludge to keep the trailing blank lines for pje's editor
addfile ./setuptools-0.6c14devdev.egg/setuptools/package_index.pyc
binary ./setuptools-0.6c14devdev.egg/setuptools/package_index.pyc
oldhex
*
newhex
*d1f20d0a4c1ef84b630000000000000000150000004000000073370200006400005a0000640100
*6402006b01005a01006401006402006b02005a03006401006402006b04005a0400640100640200
*6b05005a05006401006402006b06005a06006401006402006b07005a07006401006402006b0800
*5a08006401006402006b09005a09006401006402006b0a005a0a006401006403006b0b00546401
*006404006b0c006c0d005a0d00016401006405006b0e006c0f005a0f0001791400640100640600
*6b10006c11005a110001576e2300046512006a0a006f1700010101016401006406006b11006c11
*005a1100016e020001586401006407006b13006c14005a1400016504006915006408008301005a
*16006504006915006409006504006917008302005a1800650400691500640a008301005a190065
*0400691500640b00650400691700830200691a005a1b00640c00691c008300005a1d00640d0064
*0e00640f006410006704005a1e006411008400005a1f006412008400005a200065210064130084
*01005a22006521006414008401005a23006521006415008401005a240065210065250065210064
*16008403005a26006504006915006417006504006917008302005a27006418008400005a280064
*1900650600692900652a00641a00830100641b0019692b00660200165a2c00640d00652d006601
*00641c00840000830000595a2e00650400691500641d00830100692f005a3000641e008400005a
*3100641f008400005a32006420008400005a33006421008400005a34006422008400005a350064
*23008400005a360064020053282400000073230000005079504920616e64206469726563742070
*61636b61676520646f776e6c6f6164696e6769ffffffff4e280100000074010000002a28010000
*0074030000006c6f672801000000740e000000446973747574696c734572726f72280100000074
*030000006d6435280100000074090000007472616e736c61746573170000005e6567673d285b2d
*412d5a612d7a302d395f2e5d2b2924731a000000687265665c732a3d5c732a5b27225d3f285b5e
*27223e205d2b2973810000003c6120687265663d22285b5e22235d2b29223e285b5e3c5d2b293c
*2f613e0a5c732b5c283c6120283f3a7469746c653d224d44352068617368220a5c732b29687265
*663d225b5e3f5d2b5c3f3a616374696f6e3d73686f775f6d643526616d703b6469676573743d28
*5b302d39612d665d7b33327d29223e6d64353c2f613e5c297312000000285b2d2b2e612d7a302d
*395d7b322c7d293a731f0000002e7461722e677a202e7461722e627a32202e746172202e7a6970
*202e74677a740c0000005061636b616765496e646578740f00000064697374726f735f666f725f
*75726c741300000070617273655f62646973745f77696e696e73747415000000696e7465727072
*65745f64697374726f5f6e616d65630100000004000000040000004300000073820000007c0000
*6900008300007d01006409005c02007d02007d03007c01006902006401008301006f5000017c01
*006902006402008301006f0e00017c0000640300207d0200717800017c01006903006404006405
*008302006f1b00017c0000640600640700217d03007c0000640500207d0200717800016e010001
*7c02007c030066020053280a000000733d00000052657475726e2028626173652c707976657273
*696f6e29206f7220284e6f6e652c4e6f6e652920666f7220706f737369626c65202e657865206e
*616d6573040000002e657865730a0000002e77696e33322e65786569f6ffffff73090000002e77
*696e33322d707969f0ffffff69f9ffffff69fcffffff4e28020000004e4e280400000074050000
*006c6f77657274040000004e6f6e657408000000656e647377697468740a000000737461727473
*77697468280400000074040000006e616d65520900000074040000006261736574060000007079
*5f766572280000000028000000007345000000433a5c7461686f652d6c6166735c736574757074
*6f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c7061636b6167
*655f696e6465782e707952070000001b000000731200000000030c010c02100110010e0113010d
*011202630100000008000000060000004300000073700000007400006900007c00008301005c06
*007d01007d02007d03007d04007d05007d06007401006902007c03006903006401008301006402
*00198301007d07006403007c07006a06006f1c00017c07006903006403006404008302005c0200
*7d07007d06006e0100017c07007c06006602005328050000004e74010000002f69ffffffff7401
*0000002369010000002804000000740800000075726c7061727365740700000075726c6c696232
*7407000000756e71756f7465740500000073706c69742808000000740300000075726c74060000
*00736368656d657406000000736572766572740400000070617468740a000000706172616d6574
*657273740500000071756572797408000000667261676d656e74520e0000002800000000280000
*00007345000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663313464
*65766465762e6567675c7365747570746f6f6c735c7061636b6167655f696e6465782e70797410
*0000006567675f696e666f5f666f725f75726c2a000000730a000000000121011c010d001c0163
*02000000060000000800000063000000738e0000007400007c00008301005c02007d02007d0300
*781f007401007c00007c02007c0100830300445d0b007d04007c04005601712500577c03006f4f
*00017402006903007c03008301007d05007c05006f3500017832007404007c00007c0500690500
*6401008301007c0100640200740600830301445d0b007d04007c0400560171730057718a00016e
*01000164030053280400000073450000005969656c6420656767206f7220736f75726365206469
*73747269627574696f6e206f626a656374732074686174206d6967687420626520666f756e6420
*617420612055524c6901000000740a000000707265636564656e63654e2807000000521d000000
*741400000064697374726f735f666f725f6c6f636174696f6e740c0000004547475f465241474d
*454e5474050000006d617463685208000000740500000067726f7570740d000000434845434b4f
*55545f444953542806000000521600000074080000006d65746164617461520e000000521c0000
*007404000000646973745221000000280000000028000000007345000000433a5c7461686f652d
*6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c736574757074
*6f6f6c735c7061636b6167655f696e6465782e7079520600000030000000731600000000021201
*13000600090107010f01070106011c000602630300000006000000080000004300000073e60000
*007c01006900006401008301006f0e00017c0100640200207d01006e0100017c01006900006403
*008301006f2400016404007c01006a06006f1700017401006902007c00007c01007c0200830300
*67010053017c01006900006405008301006f3d00017403007c01008301005c02007d03007d0400
*7c03006407006a09006f1a00017405007c00007c03007c02007c04007406006406008306005301
*6e010001784000740700445d38007d05007c01006900007c05008301006f2200017c0100740800
*7c05008301000b207d01007405007c00007c01007c0200830300530171a6005767000053280800
*0000733a0000005969656c6420656767206f7220736f7572636520646973747269627574696f6e
*206f626a65637473206261736564206f6e20626173656e616d6573080000002e6567672e7a6970
*69fcffffff73040000002e65676774010000002d73040000002e657865740500000077696e3332
*4e2809000000520b000000740c000000446973747269627574696f6e740d00000066726f6d5f6c
*6f636174696f6e5207000000520a0000005208000000740b00000042494e4152595f4449535474
*0a000000455854454e53494f4e5374030000006c656e280600000074080000006c6f636174696f
*6e7408000000626173656e616d655224000000740800000077696e5f62617365520f0000007403
*000000657874280000000028000000007345000000433a5c7461686f652d6c6166735c73657475
*70746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c7061636b
*6167655f696e6465782e7079521f0000003c000000731e000000000210010e011d021702100112
*010d0103011b050700060110011101150163020000000200000004000000430000007322000000
*7400007401007c00008301007402006903006904007c00008301007c0100830300532801000000
*73450000005969656c6420706f737369626c6520656767206f7220736f75726365206469737472
*69627574696f6e206f626a65637473206261736564206f6e20612066696c656e616d6528050000
*00521f000000740e0000006e6f726d616c697a655f7061746874020000006f735219000000522e
*0000002802000000740800000066696c656e616d65522400000028000000002800000000734500
*0000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36633134646576646576
*2e6567675c7365747570746f6f6c735c7061636b6167655f696e6465782e707974140000006469
*7374726f735f666f725f66696c656e616d65530000007304000000000203016306000000090000
*00110000006300000073cb0000007c01006900006401008301007d06007c0300704d0001784a00
*7401007c06006402001f830100445d34005c02007d07007d08007402007c08008301006403006a
*02006f1500017c08006903006404008301006f0500016405005301712700576e01000178610074
*04006406007402007c060083010064060017830200445d46007d08007405007c00007c02006401
*006906007c06007c0800208301006401006906007c06007c08001f8301006407007c0300640800
*7c04006409007c05008304035601717d005764050053280a00000073d800000047656e65726174
*6520616c7465726e617469766520696e746572707265746174696f6e73206f66206120736f7572
*63652064697374726f206e616d650a0a202020204e6f74653a20696620606c6f636174696f6e60
*20697320612066696c6573797374656d2066696c656e616d652c20796f752073686f756c642063
*616c6c0a202020206060706b675f7265736f75726365732e6e6f726d616c697a655f7061746828
*296060206f6e206974206265666f72652070617373696e6720697420746f20746869730a202020
*20726f7574696e65210a2020202052260000006902000000690500000073040000007079322e4e
*6901000000740a00000070795f76657273696f6e521e0000007408000000706c6174666f726d28
*0700000052150000007409000000656e756d6572617465522c000000520c000000740500000072
*616e6765522800000074040000006a6f696e2809000000522d000000522e000000522400000052
*35000000521e000000523600000074050000007061727473740100000069740100000070280000
*000028000000007345000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e
*366331346465766465762e6567675c7365747570746f6f6c735c7061636b6167655f696e646578
*2e707952080000005a000000731800000000150f01070111000c0123010d021a00060103012901
*0c0173280000003c285b5e3e5d2a5c7372656c5c732a3d5c732a5b27225d3f285b5e27223e5d2b
*295b5e3e5d2a293e6302000000070000000800000063000000731701000078a200740000690100
*7c0100830100445d91007d02007c02006902008300005c02007d03007d04007403007404006905
*007c04006906008300006907006401008301008302007d05006402007c05006a0600700d000164
*03007c05006a06006f3e0001783b007408006901007c0300830100445d26007d0200740900690a
*007c0000740b007c0200690c006404008301008301008302005601717300577110000171100057
*786b00640900445d63007d03007c0100690d007c03008301007d06007c06006407006a03006f41
*0001740800690e007c01007c06008302007d02007c02006f240001740900690a007c0000740b00
*7c0200690c006404008301008301008302005601710f010171ac000171ac005764080053280a00
*0000734500000046696e642072656c3d22686f6d65706167652220616e642072656c3d22646f77
*6e6c6f616422206c696e6b7320696e206070616765602c207969656c64696e672055524c737401
*0000002c7408000000686f6d65706167657408000000646f776e6c6f61646901000000730d0000
*003c74683e486f6d65205061676573100000003c74683e446f776e6c6f61642055524c69ffffff
*ff4e2802000000730d0000003c74683e486f6d65205061676573100000003c74683e446f776e6c
*6f61642055524c280f000000740300000052454c740800000066696e6469746572740600000067
*726f75707374030000006d61707403000000737472740500000073747269705209000000521500
*00007404000000485245465212000000740700000075726c6a6f696e740a00000068746d6c6465
*636f64655222000000740400000066696e64740600000073656172636828070000005216000000
*74040000007061676552210000007403000000746167740300000072656c740400000072656c73
*7403000000706f73280000000028000000007345000000433a5c7461686f652d6c6166735c7365
*747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c7061
*636b6167655f696e6465782e7079741300000066696e645f65787465726e616c5f6c696e6b737f
*000000731e000000000310000601120121011a01100006012c02070006010f010d011201070173
*1e000000507974686f6e2d75726c6c69622f2573207365747570746f6f6c732f2573740a000000
*7365747570746f6f6c736900000000630000000000000000040000004200000073490100006500
*005a01006400005a02006401006422006403008402005a03006504006404008401005a05006504
*006405008401005a06006504006406008401005a07006407008400005a08006408008400005a09
*006409008400005a0a00640a008400005a0b00642300640b008401005a0d00640c008400005a0e
*00642300640d008401005a0f00640e008400005a1000640f008400005a11006410008400005a12
*006411008400005a13006412008400005a14006504006504006504006413008403005a15006504
*006504006414008402005a16006415008400005a17006416005a18006417008400005a19006418
*008400005a1a006423006419008401005a1b00641a008400005a1c00641b008400005a1d00641c
*008400005a1e00641d008400005a1f00641e008400005a2000641f008400005a21006420008400
*005a22006421008400005a230052532824000000733b0000004120646973747269627574696f6e
*20696e6465782074686174207363616e732077656220706167657320666f7220646f776e6c6f61
*642055524c73731d000000687474703a2f2f707970692e707974686f6e2e6f72672f73696d706c
*655200000000630300000005000000060000004f000000737d0000007400006901007c00007c03
*007c04008e0100017c01006401007c01006902006401008301000c20177c00005f03006800007c
*00005f04006800007c00005f05006800007c00005f0600740700690800640200690900740a0074
*0b007c0200830200830100830100690c007c00005f0d006700007c00005f0e0064000053280300
*00004e521000000074010000007c280f000000740b000000456e7669726f6e6d656e7474080000
*005f5f696e69745f5f520b0000007409000000696e6465785f75726c740c0000007363616e6e65
*645f75726c73740c000000666574636865645f75726c73740d0000007061636b6167655f706167
*6573740200000072657407000000636f6d70696c65523900000052430000005204000000522100
*00007406000000616c6c6f77737407000000746f5f7363616e2805000000740400000073656c66
*52550000007405000000686f73747374040000006172677374020000006b772800000000280000
*00007345000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663313464
*65766465762e6567675c7365747570746f6f6c735c7061636b6167655f696e6465782e70795254
*00000098000000730e000000000313011b01090109010901270163030000000900000006000000
*43000000730e0200007c01007c00006900006a06006f0d00017c02000c6f050001640100530174
*01007c00006900007c01003c7402007c0100830100701200017c00006903007c01008301000164
*010053017404007405007c01008301008301007d03007c03006f2900017c00006906007c010083
*01007005000164010053017c00006907006402007c0100830200016e0100017c0300701800017c
*02000c701000017c01007c00006908006a06006f1500017409007c0000690a007c030083020001
*64010053017c00006906007c0100830100701200017401007c00006908007c01003c6401005301
*7c0000690b006403007c0100830200017c0000690c007c01006404008302007d04007c04006401
*006a08006f0500016401005301740100047c00006908007c01003c7c00006908007c0400690e00
*3c6405007c0400690f006910006406006407008302006911008300006a07006f0f00017c040069
*12008300000164010053017c0400690e007d05007c04006913008300007d06007c040069120083
*0000017c01006914007c00006915008301006f2f00017416007c04006408006401008303006409
*006a03006f1600017c00006917007c01007c06008302007d06006e010001784500741800691900
*7c0600830100445d34007d0700741a00691b007c0500741c007c0700691d00640a008301008301
*008302007d08007c0000691e007c08008301000171d2015764010053280b000000733c00000045
*76616c7561746520612055524c206173206120706f737369626c6520646f776e6c6f61642c2061
*6e64206d617962652072657472696576652069744e730e000000466f756e64206c696e6b3a2025
*73730a00000052656164696e672025737335000000446f776e6c6f6164206572726f723a202573
*202d2d20536f6d65207061636b61676573206d6179206e6f7420626520666f756e642174040000
*0068746d6c730c000000636f6e74656e742d7479706574000000007404000000636f6465699401
*00006901000000281f0000005256000000740400000054727565740a00000055524c5f53434845
*4d45741000000070726f636573735f66696c656e616d6574040000006c69737452060000007406
*00000075726c5f6f6b740500000064656275675257000000524300000074030000006164647404
*000000696e666f74080000006f70656e5f75726c520a0000005216000000740700000068656164
*657273740300000067657452090000007405000000636c6f7365740400000072656164520c0000
*005255000000740700000067657461747472740d00000070726f636573735f696e646578524600
*000052410000005212000000524700000052480000005222000000740b00000070726f63657373
*5f75726c2809000000525d00000052160000007408000000726574726965766574050000006469
*737473740100000066520e000000524b000000522100000074040000006c696e6b280000000028
*000000007345000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331
*346465766465762e6567675c7365747570746f6f6c735c7061636b6167655f696e6465782e7079
*5273000000a500000073440000000002180105010d010d010d010502120107011001050114021f
*011001050210010d010502100112010d0005011b0222010a01050209010c010a012c0116011000
*06012101630300000006000000050000004300000073cd0000007400006901006902007c010083
*0100701500017c00006903006401007c01008302000164000053017400006901006904007c0100
*8301006f5700017c02000c6f4f00017400006901006905007c01008301007d0300783a00740000
*6906007c0300830100445d25007d04007c00006907007400006901006908007c03007c04008302
*0074090083020001716500576e010001740a007c01008301007d05007c05006f2400017c000069
*0b006402007c010083020001740c007c0000690d007c0500830200016e01000164000053280300
*00004e730d0000004e6f7420666f756e643a2025737309000000466f756e643a202573280e0000
*0052320000005219000000740600000065786973747374040000007761726e7405000000697364
*697274080000007265616c7061746874070000006c697374646972526600000052390000005264
*000000523400000052690000005243000000526a0000002806000000525d000000740200000066
*6e74060000006e6573746564521900000074040000006974656d52750000002800000000280000
*00007345000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663313464
*65766465762e6567675c7365747570746f6f6c735c7061636b6167655f696e6465782e70795266
*000000ce000000731800000000021301100105021b0112011000060127020c0107011001630300
*000004000000030000004300000073570000007c00006900007401006901007c01008301006401
*00198301006f05000174020053016402007d03007c02006f1400017403007c03007c0100168301
*008201006e1100017c00006904007c03007c0100830200016400005328030000004e6901000000
*732c0000000a4c696e6b20746f20252073202a2a2a424c4f434b45442a2a2a206279202d2d616c
*6c6f772d686f7374730a2805000000525b00000052120000005264000000520200000052790000
*002804000000525d00000052160000007405000000666174616c74030000006d73672800000000
*28000000007345000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663
*31346465766465762e6567675c7365747570746f6f6c735c7061636b6167655f696e6465782e70
*795268000000de000000730c00000000011d010501060107011402630200000004000000050000
*0043000000736a0000007863007c0100445d5b007d02007400006901006902007c02008301006f
*420001783f007400006903007c0200830100445d2a007d03007c03006904006401008301006f14
*00017c00006905007c02007c030083020001713000017130005771070001710700576400005328
*020000004e73090000002e6567672d6c696e6b280600000052320000005219000000527a000000
*527c000000520b000000740d0000007363616e5f6567675f6c696e6b2804000000525d00000074
*0b0000007365617263685f70617468527f0000007405000000656e747279280000000028000000
*007345000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465
*766465762e6567675c7365747570746f6f6c735c7061636b6167655f696e6465782e7079740e00
*00007363616e5f6567675f6c696e6b73e7000000730e0000000001070006011301100006011001
*630300000005000000080000004300000073a30000007400006400007402007403006904007405
*007406006907006908007c01007c02008302008301008302008302007d03007409007c03008301
*006401006a02006f5c0001785900740a007406006907006908007c01007c030064020019830200
*830100445d34007d04007406006907006908007c01007c03008c01007c04005f0b00740c007c04
*005f0d007c0000690e007c040083010001716300576e0100016400005328030000004e69020000
*006900000000280f000000740600000066696c746572520a000000524300000052440000005245
*000000740400000066696c65523200000052190000005239000000522c00000074120000006669
*6e645f646973747269627574696f6e73522d000000740b000000534f555243455f44495354521e
*000000526a0000002805000000525d0000005219000000528400000074050000006c696e657352
*25000000280000000028000000007345000000433a5c7461686f652d6c6166735c736574757074
*6f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c7061636b6167
*655f696e6465782e70795282000000ee000000730e000000000130011301200006011801090163
*030000000a000000080000000300000073040100008700006601006401008600007d0300783c00
*7400006901007c0200830100445d2b007d04007c03007402006903007c01007404007c04006905
*0064020083010083010083020083010001711f00577c03007c01008301005c02007d05007d0600
*7c05006f950001787e007406007c01007c0200830200445d6d007d07007407007c07008301005c
*02007d08007d09007c08006908006403008301006f3800017c09000c6f3000017c06006f180001
*7c07006404007c05007c060066020016377d070071d700018800006909007c0100830100016e01
*0001880000690a007c07008301000171770057740b00690c006405008400007c02008302005301
*64060053640700532808000000732300000050726f636573732074686520636f6e74656e747320
*6f66206120507950492070616765630100000004000000050000001300000073bd0000007c0000
*6900008800006901008301006fa600017402007403006904007c00007405008800006901008301
*001f6906006401008301008302007d01007405007c01008301006402006a02006f670001640300
*7c0100640400196a07006f5600017407007c0100640500198301007d02007408007c0100640400
*198301007d0300740900880000690a00690b007c0200690c008300006800008302007c00003c74
*0d007c0200830100740d007c030083010066020053016e0100016406005328070000004e521000
*0000690200000052110000006901000000690000000028020000004e4e280f000000520c000000
*5255000000524300000052130000005214000000522c0000005215000000740900000073616665
*5f6e616d65740c000000736166655f76657273696f6e52640000005258000000740a0000007365
*7464656661756c745209000000740b000000746f5f66696c656e616d65520a0000002804000000
*5277000000523a0000007403000000706b6774030000007665722801000000525d000000280000
*00007345000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663313464
*65766465762e6567675c7365747570746f6f6c735c7061636b6167655f696e6465782e70797404
*0000007363616ef9000000731200000000021301030125022402100110011f011b016901000000
*73030000002e7079730a000000236567673d25732d257363010000000100000005000000530000
*0073170000006400007c000069000064010064020064030083030016532804000000731a000000
*3c6120687265663d222573236d64353d2573223e25733c2f613e69010000006903000000690200
*000028010000005222000000280100000074010000006d28000000002800000000734500000043
*3a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567
*675c7365747570746f6f6c735c7061636b6167655f696e6465782e707974080000003c6c616d62
*64613e19010000730000000052620000004e280d00000052460000005241000000521200000052
*47000000524800000052220000005250000000521d000000520b00000074110000006e6565645f
*76657273696f6e5f696e666f74080000007363616e5f75726c7408000000505950495f4d443574
*03000000737562280a000000525d0000005216000000524b00000052910000005221000000528f
*000000529000000074070000006e65775f75726c520e0000007404000000667261672800000000
*2801000000525d0000007345000000433a5c7461686f652d6c6166735c7365747570746f6f6c73
*2d302e366331346465766465762e6567675c7365747570746f6f6c735c7061636b6167655f696e
*6465782e70795272000000f7000000732200000000020f0f100006012902120107021000060212
*011801070118021101110206010e03630200000002000000030000004300000073140000007c00
*006900006401007c0100830200016400005328020000004e735000000050616765206174202573
*206c696e6b7320746f202e70792066696c6528732920776974686f75742076657273696f6e2069
*6e666f3b20616e20696e646578207363616e2069732072657175697265642e2801000000740800
*00007363616e5f616c6c2802000000525d00000052160000002800000000280000000073450000
*00433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e
*6567675c7365747570746f6f6c735c7061636b6167655f696e6465782e70795294000000200100
*007306000000000106010301630200000003000000030000004700000073530000007c00006900
*007c00006901006a07006f2c00017c01006f1400017c00006902007c01007c02008c0100016e01
*00017c0000690300640100830100016e0100017c00006904007c00006900008301000164000053
*28020000004e73360000005363616e6e696e6720696e646578206f6620616c6c207061636b6167
*6573202874686973206d61792074616b652061207768696c652928050000005255000000525700
*00005279000000526b00000052950000002803000000525d0000005281000000525f0000002800
*00000028000000007345000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d30
*2e366331346465766465762e6567675c7365747570746f6f6c735c7061636b6167655f696e6465
*782e7079529a00000026010000730c000000000113010700140106010b02630200000003000000
*040000004300000073b10000007c00006900007c00006901007c01006902001764010017830100
*017c00006903006904007c0100690500830100701f00017c00006900007c00006901007c010069
*06001764010017830100016e0100017c00006903006904007c0100690500830100701100017c00
*006907007c0100830100016e0100017833007408007c00006903006904007c0100690500640200
*830200830100445d13007d02007c00006900007c02008301000171960057640000532803000000
*4e52100000002800000000280900000052950000005255000000740b000000756e736166655f6e
*616d655258000000526e00000074030000006b6579740c00000070726f6a6563745f6e616d6574
*120000006e6f745f666f756e645f696e5f696e64657852670000002803000000525d000000740b
*000000726571756972656d656e745216000000280000000028000000007345000000433a5c7461
*686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c7365
*747570746f6f6c735c7061636b6167655f696e6465782e7079740d00000066696e645f7061636b
*616765732e010000731000000000011b0216021f02160211021f00060263030000000400000005
*00000043000000736d0000007c0000690000830000017c00006901007c010083010001783a007c
*00007c010069020019445d2b007d03007c03007c01006a06006f0500017c030053017c00006903
*006401007c01007c030083030001712500577404007405007c00008302006906007c01007c0200
*8302005328020000004e7314000000257320646f6573206e6f74206d6174636820257328070000
*0074070000007072657363616e52a0000000529c00000052690000007405000000737570657252
*0500000074060000006f627461696e2804000000525d000000529f0000007409000000696e7374
*616c6c65725225000000280000000028000000007345000000433a5c7461686f652d6c6166735c
*7365747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c
*7061636b6167655f696e6465782e707952a30000003d010000731000000000010a000d010e0006
*010d01050117016305000000050000000500000043000000737d0000007400006901006401007c
*02008302006f6600017c00006902006402007c0300830200017c01006903008300007c02006403
*001f6a03006f3b00017c0400690400830000017405006906007c03008301000174070064040074
*05006908006909007c03008301001764050017830100820100717900016e010001640000532806
*0000004e73110000006d64353d5b302d39612d665d7b33327d24731e00000056616c6964617469
*6e67206d643520636865636b73756d20666f722025736904000000731a0000004d44352076616c
*69646174696f6e206661696c656420666f7220731c0000003b20706f737369626c6520646f776e
*6c6f61642070726f626c656d3f280a000000525900000052210000005269000000740900000068
*6578646967657374526f00000052320000007406000000756e6c696e6b52020000005219000000
*522e0000002805000000525d00000074020000006373526b000000523300000074030000007466
*70280000000028000000007345000000433a5c7461686f652d6c6166735c7365747570746f6f6c
*732d302e366331346465766465762e6567675c7365747570746f6f6c735c7061636b6167655f69
*6e6465782e70797409000000636865636b5f6d643549010000731000000000011301100117010a
*010d0103011301630200000003000000040000004300000073770000007870007c0100445d6800
*7d02007c00006900006402006a0800703100017402007c02008301000c702300017c0200690300
*640100830100701300017404007405007c02008301008301006f1100017c00006906007c020083
*010001710700017c00006900006907007c02008301000171070057640200532803000000733b00
*0000416464206075726c736020746f20746865206c69737420746861742077696c6c2062652070
*72657363616e6e656420666f72207365617263686573730500000066696c653a4e280800000052
*5c000000520a0000005265000000520c0000005267000000520600000052950000007406000000
*617070656e642803000000525d000000740400000075726c735216000000280000000028000000
*007345000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465
*766465762e6567675c7365747570746f6f6c735c7061636b6167655f696e6465782e7079740e00
*00006164645f66696e645f6c696e6b7354010000731000000000020700060210010e0110011303
*11036301000000010000000300000043000000732e0000007c00006900006f1700017401007c00
*006902007c0000690000830200016e0100016401007c00005f0000640100532802000000733700
*00005363616e2075726c73207363686564756c656420666f72207072657363616e6e696e672028
*652e672e202d2d66696e642d6c696e6b73294e2804000000525c00000052430000005295000000
*520a0000002801000000525d000000280000000028000000007345000000433a5c7461686f652d
*6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c736574757074
*6f6f6c735c7061636b6167655f696e6465782e707952a100000063010000730600000000020a01
*1701630200000004000000030000004300000073500000007c00007c0100690000196f1400017c
*0000690100640100027d02007d03006e1100017c0000690200640200027d02007d03007c02007c
*03007c0100690300830200017c0000690400830000016400005328030000004e7323000000436f
*756c646e277420726574726965766520696e646578207061676520666f72202572733300000043
*6f756c646e27742066696e6420696e646578207061676520666f7220257220286d61796265206d
*69737370656c6c65643f292805000000529c000000526b0000005279000000529b000000529a00
*00002804000000525d000000529f00000074040000006d65746852810000002800000000280000
*00007345000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663313464
*65766465762e6567675c7365747570746f6f6c735c7061636b6167655f696e6465782e7079529e
*00000069010000730c00000000010e01140206010a011001630300000007000000070000004300
*000073f50000007400007c010074010083020070c900017402007c01008301007d03007c03006f
*5e00017c00006903007c03006904006401008301007c01007c02008303007d04007405007c0100
*8301005c02007d05007d06007c05006906006402008301006f1900017c00006907007c04007c06
*007c02008303007d04006e0100017c04005301740800690900690a007c01008301006f0500017c
*01005301791300740100690b007c01008301007d01005771d90004740c006a0a006f1a00010101
*01740d006403007c01006601001683010082010071d90001586e010001740e007c0000690f007c
*01007c0200830200640400640500830300532806000000730e0400004c6f6361746520616e642f
*6f7220646f776e6c6f61642060737065636020746f2060746d70646972602c2072657475726e69
*6e672061206c6f63616c20706174680a0a2020202020202020607370656360206d617920626520
*61206060526571756972656d656e746060206f626a6563742c206f72206120737472696e672063
*6f6e7461696e696e6720612055524c2c0a2020202020202020616e206578697374696e67206c6f
*63616c2066696c656e616d652c206f7220612070726f6a6563742f76657273696f6e2072657175
*6972656d656e7420737065630a202020202020202028692e652e2074686520737472696e672066
*6f726d206f662061206060526571756972656d656e746060206f626a656374292e202049662069
*74206973207468652055524c0a20202020202020206f662061202e70792066696c652077697468
*20616e20756e616d626967756f7573206060236567673d6e616d652d76657273696f6e60602074
*61672028692e652e2c206f6e650a20202020202020207468617420657363617065732060602d60
*602061732060605f6060207468726f7567686f7574292c2061207472697669616c206060736574
*75702e707960602069730a20202020202020206175746f6d61746963616c6c7920637265617465
*6420616c6f6e67736964652074686520646f776e6c6f616465642066696c652e0a0a2020202020
*2020204966206073706563602069732061206060526571756972656d656e746060206f626a6563
*74206f72206120737472696e6720636f6e7461696e696e6720610a202020202020202070726f6a
*6563742f76657273696f6e20726571756972656d656e7420737065632c2074686973206d657468
*6f642072657475726e7320746865206c6f636174696f6e206f660a202020202020202061206d61
*746368696e6720646973747269627574696f6e2028706f737369626c7920616674657220646f77
*6e6c6f6164696e6720697420746f2060746d7064697260292e0a20202020202020204966206073
*706563602069732061206c6f63616c6c79206578697374696e672066696c65206f722064697265
*63746f7279206e616d652c2069742069732073696d706c790a202020202020202072657475726e
*656420756e6368616e6765642e202049662060737065636020697320612055524c2c2069742069
*7320646f776e6c6f6164656420746f206120737562706174680a20202020202020206f66206074
*6d70646972602c20616e6420746865206c6f63616c2066696c656e616d65206973207265747572
*6e65642e2020566172696f7573206572726f7273206d61792062650a2020202020202020726169
*73656420696620612070726f626c656d206f636375727320647572696e6720646f776e6c6f6164
*696e672e0a2020202020202020690100000073030000002e707973310000004e6f742061205552
*4c2c206578697374696e672066696c652c206f7220726571756972656d656e7420737065633a20
*2572522d0000004e2811000000740a0000006973696e7374616e6365740b000000526571756972
*656d656e745265000000740d0000005f646f776e6c6f61645f75726c5222000000521d00000052
*0b000000740900000067656e5f7365747570523200000052190000005278000000740500000070
*61727365740a00000056616c75654572726f725202000000527100000074120000006665746368
*5f646973747269627574696f6e520a0000002807000000525d0000007404000000737065637406
*000000746d7064697252170000007405000000666f756e64520e000000521c0000002800000000
*28000000007345000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663
*31346465766465762e6567675c7365747570746f6f6c735c7061636b6167655f696e6465782e70
*79523f000000720100007322000000001210010c0107021e011201100119010501130205020301
*13010e01030103011602630600000008000000050000000300000073fe00000088020069000064
*01007c010083020001680000890000870000870100870200870300870400660500640200860000
*7d06007c03006f1b0001880200690100830000018802006902007c0100830100016e0100017c06
*007c01008301007d07007c07006406006a08006f2a00018802006904006406006a09006f1a0001
*880200690100830000017c06007c01008301007d07006e0100017c07006406006a08006f250001
*7c03000c6f1d00018802006902007c0100830100017c06007c01008301007d07006e0100017c07
*006406006a08006f2500018802006905006403008803006f070001640400700400016405007c01
*00830300016e0100017c0700532807000000737c0300004f627461696e20612064697374726962
*7574696f6e207375697461626c6520666f722066756c66696c6c696e672060726571756972656d
*656e74600a0a202020202020202060726571756972656d656e7460206d75737420626520612060
*60706b675f7265736f75726365732e526571756972656d656e74606020696e7374616e63652e0a
*20202020202020204966206e65636573736172792c206f72206966207468652060666f7263655f
*7363616e6020666c6167206973207365742c2074686520726571756972656d656e742069730a20
*20202020202020736561726368656420666f7220696e2074686520286f6e6c696e652920706163
*6b61676520696e6465782061732077656c6c20617320746865206c6f63616c6c790a2020202020
*202020696e7374616c6c6564207061636b616765732e2020496620612064697374726962757469
*6f6e206d61746368696e672060726571756972656d656e746020697320666f756e642c0a202020
*20202020207468652072657475726e656420646973747269627574696f6e27732060606c6f6361
*74696f6e6060206973207468652076616c756520796f7520776f756c6420686176650a20202020
*20202020676f7474656e2066726f6d2063616c6c696e6720746865206060646f776e6c6f616428
*296060206d6574686f64207769746820746865206d61746368696e670a20202020202020206469
*73747269627574696f6e27732055524c206f722066696c656e616d652e20204966206e6f206d61
*746368696e6720646973747269627574696f6e20697320666f756e642c0a202020202020202060
*604e6f6e6560602069732072657475726e65642e0a0a2020202020202020496620746865206073
*6f757263656020666c6167206973207365742c206f6e6c7920736f757263652064697374726962
*7574696f6e7320616e6420736f757263650a2020202020202020636865636b6f7574206c696e6b
*732077696c6c20626520636f6e736964657265642e2020556e6c65737320746865206064657665
*6c6f705f6f6b6020666c61672069730a20202020202020207365742c20646576656c6f706d656e
*7420616e642073797374656d20656767732028692e652e2c2074686f7365207573696e67207468
*652060602e6567672d696e666f60600a2020202020202020666f726d6174292077696c6c206265
*2069676e6f7265642e0a20202020202020207310000000536561726368696e6720666f72202573
*630100000002000000060000001300000073bb00000078b4008802007c000069000019445da500
*7d01007c01006901007402006a02006f3a00018801000c6f3200017c01008800006a07006f1e00
*018802006903006401007c0100830200016402008800007c01003c710e0001710e006e0100017c
*01007c00006a06006f4800017c01006901007404006a0100700800018803000c6f300001880200
*6905006403007c0100830200017c01006906006404008802006907007c01006908008804008302
*008300015301710e00576400005328050000004e7326000000536b697070696e6720646576656c
*6f706d656e74206f722073797374656d206567673a2025736901000000730e0000004265737420
*6d617463683a202573522d0000002809000000529c000000521e000000740c000000444556454c
*4f505f4449535452790000005289000000526b0000007405000000636c6f6e65523f000000522d
*00000028020000007403000000726571522500000028050000007407000000736b697070656474
*0a000000646576656c6f705f6f6b525d0000007406000000736f7572636552b600000028000000
*007345000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465
*766465762e6567675c7365747570746f6f6c735c7061636b6167655f696e6465782e7079524900
*0000b3010000731600000000030e00060218010d0110010e01070225011001090173320000004e
*6f206c6f63616c207061636b61676573206f7220646f776e6c6f6164206c696e6b7320666f756e
*6420666f72202573257373190000006120736f7572636520646973747269627574696f6e206f66
*2052620000004e2806000000526b00000052a100000052a0000000520a000000525c0000005279
*0000002808000000525d000000529f00000052b6000000740a000000666f7263655f7363616e52
*bd00000052bc000000524900000052250000002800000000280500000052bb00000052bc000000
*525d00000052bd00000052b60000007345000000433a5c7461686f652d6c6166735c7365747570
*746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c7061636b61
*67655f696e6465782e707952b40000009b01000073260000000015100106021b1107010a011102
*0c011d010a01100215010d0110020d010601030111010b02630500000006000000050000004300
*000073310000007c00006900007c01007c02007c03007c04008304007d05007c05006401006a09
*006f0800017c0500690200530164010053280200000073330100004f627461696e20612066696c
*65207375697461626c6520666f722066756c66696c6c696e672060726571756972656d656e7460
*0a0a2020202020202020444550524543415445443b207573652074686520606066657463685f64
*6973747269627574696f6e28296060206d6574686f64206e6f7720696e73746561642e2020466f
*720a20202020202020206261636b7761726420636f6d7061746962696c6974792c207468697320
*726f7574696e65206973206964656e746963616c206275742072657475726e73207468650a2020
*20202020202060606c6f636174696f6e6060206f662074686520646f776e6c6f61646564206469
*73747269627574696f6e20696e7374656164206f66206120646973747269627574696f6e0a2020
*2020202020206f626a6563742e0a20202020202020204e280300000052b4000000520a00000052
*2d0000002806000000525d000000529f00000052b600000052be00000052bd0000005225000000
*280000000028000000007345000000433a5c7461686f652d6c6166735c7365747570746f6f6c73
*2d302e366331346465766465762e6567675c7365747570746f6f6c735c7061636b6167655f696e
*6465782e707974050000006665746368d90100007308000000000818010d01080163040000000c
*000000090000004300000073880100007400006901007c02008301007d04007c04006f45000167
*0000047d05007402007c01007c0400690300640100830100640000830300445d1b007d06007c06
*006905006f0b00017c05007c060012713600017136007e0500700400016700007d07007406007c
*07008301006401006a02006fe300017407006908006909007c01008301007d0800740700690800
*690a007c01008301007c03006a03006f530001740700690800690b007c03007c08008302007d09
*006402006403006b0c006c0d007d0a00017c0a007c01007c0900830200701a0001740e00690f00
*7c01007c0900830200017c09007d010071f200016e010001741000740700690800690b007c0300
*6404008302006405008302007d0b007c0b006911006406007c0700640700196912007c07006407
*00196905007407006908006913007c08008301006407001966030016830100017c0b0069140083
*0000017c010053017c04006f1a00017415006408007c02007c0700660200168301008201006e0d
*000174150064090083010082010064000053280a0000004e690100000069ffffffff2801000000
*740800000073616d6566696c65730800000073657475702e707974010000007773490000006672
*6f6d207365747570746f6f6c7320696d706f72742073657475700a7365747570286e616d653d25
*722c2076657273696f6e3d25722c2070795f6d6f64756c65733d5b25725d290a69000000007386
*00000043616e277420756e616d626967756f75736c7920696e746572707265742070726f6a6563
*742f76657273696f6e206964656e7469666965722025723b20616e792064617368657320696e20
*746865206e616d65206f722076657273696f6e2073686f756c6420626520657363617065642075
*73696e6720756e64657273636f7265732e202572737000000043616e27742070726f6365737320
*706c61696e202e70792066696c657320776974686f757420616e2027236567673d6e616d652d76
*657273696f6e272073756666697820746f20656e61626c65206175746f6d617469632073657475
*70207363726970742067656e65726174696f6e2e28160000005220000000522100000052080000
*005222000000520a000000740700000076657273696f6e522c0000005232000000521900000052
*2e00000074070000006469726e616d655239000000741f0000007365747570746f6f6c732e636f
*6d6d616e642e656173795f696e7374616c6c52c0000000740600000073687574696c7405000000
*636f70793274040000006f70656e74050000007772697465529d000000740800000073706c6974
*657874526f0000005202000000280c000000525d0000005233000000521c00000052b600000052
*2100000074040000005f5b315d7401000000645275000000522e000000740300000064737452c0
*0000005287000000280000000028000000007345000000433a5c7461686f652d6c6166735c7365
*747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c7061
*636b6167655f696e6465782e707952b1000000ed010000733200000000010f010e013e01060213
*011203190115011001100110010e021e010601030314011b030a01050207010301030214030301
*690020000063030000000c000000090000004300000073c20100007c00006900006401007c0100
*83020001640a005c03007d03007d04007d05007a71016402007c01006a06006f1c00017c010069
*02006402006403008302005c02007d01007d05006e0100017c00006903007c01008301007d0300
*7404007c03007405006906008302006f2300017407006404007c01007c03006908007c03006909
*00660300168301008201006e010001740a008300007d06007c03006900008300007d0700640500
*7d08007c0000690b007d09006406007d0a006407007c07006a06006f2d0001740c007c07006408
*00198301007d0a007c0000690d007c01007c02007c08007c09007c0a00830500016e010001740e
*007c02006409008302007d0400786400740f006f5c00017c03006910007c09008301007d0b007c
*0b006f4100017c06006911007c0b00830100017c04006912007c0b00830100017c080064030037
*7d08007c0000690d007c01007c02007c08007c09007c0a0083050001710601015071060101577c
*05006f1a00017c00006913007c06007c05007c02007c0400830400016e0100017c070053576400
*007c03006f0e00017c0300691400830000016e0100017c04006f0e00017c040069140083000001
*6e0100015864000053280b0000004e730e000000446f776e6c6f6164696e672025735211000000
*6901000000731800000043616e277420646f776e6c6f61642025733a2025732025736900000000
*69ffffffff730e000000636f6e74656e742d6c656e677468730e000000436f6e74656e742d4c65
*6e6774687402000000776228030000004e4e4e2815000000526b000000520a0000005215000000
*526c00000052ae00000052130000007409000000485454504572726f7252020000005263000000
*52810000005203000000740c000000646c5f626c6f636b73697a657403000000696e74740a0000
*007265706f7274686f6f6b52c700000052640000005270000000740600000075706461746552c8
*00000052a9000000526f000000280c000000525d00000052160000005233000000740200000066
*7052a8000000526b00000052a7000000526d0000007408000000626c6f636b6e756d7402000000
*6273740400000073697a657405000000626c6f636b280000000028000000007345000000433a5c
*7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c
*7365747570746f6f6c735c7061636b6167655f696e6465782e7079740c0000005f646f776e6c6f
*61645f746f170200007344000000000110020f0103010d011c010f0113010301200209010c0106
*01090106010d0110011d010f01030007010f0107010d010d010a011d02060107001a0108020700
*0e010700630600000006000000010000004300000073040000006400005328010000004e280000
*00002806000000525d0000005216000000523300000052d40000007407000000626c6b73697a65
*52d6000000280000000028000000007345000000433a5c7461686f652d6c6166735c7365747570
*746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c7061636b61
*67655f696e6465782e707952d10000003b02000073020000000001630300000004000000050000
*004300000073970000007c01006900006401008301006f0b00017401007c01008301005301790e
*007402007c010083010053576e6700047403006904006a0a006f0a0001017d0300017c03005301
*047403006905006a0a006f400001017d0300017c02006f1700017c00006906007c02007c030069
*070083020001719300017408006402007c01007c0300690700660200168301008201006e020001
*586400005328030000004e730500000066696c653a7319000000446f776e6c6f6164206572726f
*7220666f722025733a2025732809000000520c000000740a0000006c6f63616c5f6f70656e740e
*0000006f70656e5f776974685f61757468521300000052ce000000740800000055524c4572726f
*7252790000007406000000726561736f6e52020000002804000000525d00000052160000007407
*0000007761726e696e67740100000076280000000028000000007345000000433a5c7461686f65
*2d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c7365747570
*746f6f6c735c7061636b6167655f696e6465782e7079526c0000003f0200007316000000000110
*010b0103010e011301050113010700170206016304000000060000000400000043000000732001
*00007400006400007402006902007c0200830100640100196903006402008301008302007d0400
*7c04006f4100017c0400640300197d0400783a006404007c04006a06006f2200017c0400690400
*6404006405008302006904006406006407008302007d040071390001576e0700016408007d0400
*7c04006905006409008301006f0e00017c0400640a00207d04006e010001740600690700690800
*7c03007c04008302007d05007c0100640b006a0200701000017c0100690900640c008301006f11
*00017c0000690a007c02007c050083020053017c0100640d006a02006f1b0001740b00690c0074
*02006902007c02008301006401001983010053017c0000690d007c0200740e00830200017c0000
*690f007c02007c05008302005364000053280e0000004e6902000000521000000069ffffffff73
*020000002e2e74010000002e73010000005c74010000005f740e0000005f5f646f776e6c6f6164
*65645f5f73080000002e6567672e7a697069fcffffff740300000073766e730400000073766e2b
*528700000028100000005286000000520a0000005212000000521500000074070000007265706c
*616365520b000000523200000052190000005239000000520c000000740d0000005f646f776e6c
*6f61645f73766e5213000000740c00000075726c32706174686e616d6552680000005264000000
*74110000005f617474656d70745f646f776e6c6f61642806000000525d00000052170000005216
*00000052b6000000520d0000005233000000280000000028000000007345000000433a5c746168
*6f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c736574
*7570746f6f6c735c7061636b6167655f696e6465782e707952b00000004c020000732000000000
*03250107010a0103000d012702060210010e0215041d0111010d011b0210016302000000020000
*00030000004300000073140000007c00006900007c010074010083020001640000532801000000
*4e2802000000527300000052640000002802000000525d00000052160000002800000000280000
*00007345000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e3663313464
*65766465762e6567675c7365747570746f6f6c735c7061636b6167655f696e6465782e70795295
*00000068020000730200000000016303000000040000000400000043000000734d0000007c0000
*6900007c01007c02008302007d03006401007c0300690100640200640300830200690200830000
*6a06006f1400017c00006903007c01007c03007c020083030053017c0200536400005328040000
*004e5261000000730c000000636f6e74656e742d747970655262000000280400000052d8000000
*526e0000005209000000740e0000005f646f776e6c6f61645f68746d6c2804000000525d000000
*52160000005233000000526d000000280000000028000000007345000000433a5c7461686f652d
*6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c736574757074
*6f6f6c735c7061636b6167655f696e6465782e707952e70000006c020000730800000000011201
*1f011402630400000006000000050000004300000073950000007400007c03008301007d040078
*5b007c0400445d53007d05007c05006901008300006f4000017402006903006401007c05008302
*006f2800017c0400690400830000017405006906007c0300830100017c00006907007c01007c03
*0083020053015071130001711300577c0400690400830000017405006906007c03008301000174
*08006402007c0100178301008201006400005328030000004e73200000003c7469746c653e285b
*5e2d205d2b202d20293f5265766973696f6e205c642b3a731e000000556e657870656374656420
*48544d4c207061676520666f756e6420617420280900000052c700000052450000005259000000
*524a000000526f000000523200000052a600000052e500000052020000002806000000525d0000
*005216000000526d0000005233000000528700000074040000006c696e65280000000028000000
*007345000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465
*766465762e6567675c7365747570746f6f6c735c7061636b6167655f696e6465782e707952e800
*000073020000731800000000010c01070006010d0213020a010d01110109010a010d0163030000
*0003000000040000004300000073440000007c0100690000640100640200830200640300197d01
*007c00006901006404007c01007c0200830300017402006903006405007c01007c020066020016
*830100017c02005328060000004e5211000000690100000069000000007327000000446f696e67
*2073756276657273696f6e20636865636b6f75742066726f6d20257320746f2025737315000000
*73766e20636865636b6f7574202d7120257320257328040000005215000000526b000000523200
*0000740600000073797374656d2803000000525d00000052160000005233000000280000000028
*000000007345000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331
*346465766465762e6567675c7365747570746f6f6c735c7061636b6167655f696e6465782e7079
*52e500000082020000730800000000011601130117016302000000030000000300000047000000
*73140000007400006901007c01007c02008c0100016400005328010000004e2802000000520100
*000052690000002803000000525d0000005281000000525f000000280000000028000000007345
*000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465
*762e6567675c7365747570746f6f6c735c7061636b6167655f696e6465782e7079526900000088
*02000073020000000001630200000003000000030000004700000073140000007400006901007c
*01007c02008c0100016400005328010000004e28020000005201000000526b0000002803000000
*525d0000005281000000525f000000280000000028000000007345000000433a5c7461686f652d
*6c6166735c7365747570746f6f6c732d302e366331346465766465762e6567675c736574757074
*6f6f6c735c7061636b6167655f696e6465782e7079526b0000008b020000730200000000016302
*00000003000000030000004700000073140000007400006901007c01007c02008c010001640000
*5328010000004e2802000000520100000052790000002803000000525d0000005281000000525f
*000000280000000028000000007345000000433a5c7461686f652d6c6166735c7365747570746f
*6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c7061636b616765
*5f696e6465782e707952790000008e02000073020000000001280100000052000000004e282400
*000074080000005f5f6e616d655f5f740a0000005f5f6d6f64756c655f5f74070000005f5f646f
*635f5f5254000000740500000046616c7365527300000052660000005268000000528500000052
*8200000052720000005294000000520a000000529a00000052a000000052a300000052a9000000
*52ac00000052a1000000529e000000523f00000052b400000052bf00000052b100000052cf0000
*0052d800000052d1000000526c00000052b0000000529500000052e700000052e800000052e500
*00005269000000526b00000052790000002800000000280000000028000000007345000000433a
*5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e656767
*5c7365747570746f6f6c735c7061636b6167655f696e6465782e70795205000000950000007340
*000000060106020f0d0c290c100c0909070909092909060c08090f0c0c090b090f09060909092a
*123d0f1409290601092409040c0d091c09040907090f0906090309037321000000262823285c64
*2b7c785b5c64612d66412d465d2b297c5b5c772e3a2d5d2b293b3f630100000001000000030000
*004300000073370000007400007c0000740100830200700500017c000053017c00006401006a04
*006f0b00017402007c000083010053017403007c00008301005328020000004e69ff0000002804
*00000052ae00000052d00000007406000000756e69636872740300000063687228010000007401
*00000063280000000028000000007345000000433a5c7461686f652d6c6166735c736574757074
*6f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c7061636b6167
*655f696e6465782e707974040000007563687295020000730a0000000001100105010d000b0163
*01000000030000000500000043000000738f0000007c00006900006401008301007d01007c0100
*6901006402008301006f1700017402007c01006403001f6404008302007d01006e5000017c0100
*6901006405008301006f1400017402007c01006401001f8301007d01006e2c0001640600640700
*6b03006c04007d0200017c02006905007c01007c00006900006408008301008302007d01007406
*007c01008301005328090000004e69010000007302000000237869020000006910000000521100
*000069ffffffff2801000000740e0000006e616d6532636f6465706f696e746900000000280700
*00005222000000520c00000052d0000000740e00000068746d6c656e746974796465667352f300
*0000526e00000052f20000002803000000522100000074040000007768617452f3000000280000
*000028000000007345000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e
*366331346465766465762e6567675c7365747570746f6f6c735c7061636b6167655f696e646578
*2e7079740d0000006465636f64655f656e746974799b020000731000000000010f011001170110
*01140210011b016301000000010000000300000043000000730d0000007400007401007c000083
*020053280100000073270000004465636f64652048544d4c20656e74697469657320696e207468
*6520676976656e20746578742e2802000000740a000000656e746974795f73756252f600000028
*01000000740400000074657874280000000028000000007345000000433a5c7461686f652d6c61
*66735c7365747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f
*6c735c7061636b6167655f696e6465782e70795248000000a60200007302000000000263010000
*00120000000700000043000000735d0100007400006900007c00008301005c06007d01007d0200
*7d03007d04007d05007d06007c01006407006a06006f1900017401006902007c02008301005c02
*007d07007d08006e0700016408007d07007c07006f6600016403007401006904007c0700830100
*690500640400830100690600830000177d07007400006907007c01007c08007c03007c04007c05
*007c06006606008301007d09007401006908007c09008301007d0a007c0a006909006405007c07
*00830200016e1000017401006908007c00008301007d0a007c0a00690900640600740a00830200
*01740100690b007c0a008301007d0b007c07006f6a00017400006900007c0b00690c008301005c
*06007d0c007d0d007d0e007d0f007d10007d11007c0c007c01006a02006f3500017c0d007c0800
*6a02006f2800017400006907007c0c007c02007c0e007c0f007c10007c11006606008301007c0b
*005f0c00715901016e0100017c0b0053280900000073340000004f70656e20612075726c6c6962
*3220726571756573742c2068616e646c696e6720485454502061757468656e7469636174696f6e
*740400000068747470740500000068747470737306000000426173696320740600000062617365
*3634740d000000417574686f72697a6174696f6e730a000000557365722d4167656e7428020000
*00730400000068747470730500000068747470734e280d00000052120000005213000000740900
*000073706c697475736572520a00000052140000007406000000656e636f64655245000000740a
*00000075726c756e7061727365740700000052657175657374740a0000006164645f6865616465
*72740a000000757365725f6167656e74740700000075726c6f70656e5216000000281200000052
*16000000521700000074060000006e65746c6f6352190000007406000000706172616d73521b00
*000052990000007404000000617574687404000000686f73745298000000740700000072657175
*65737452d300000074020000007332740200000068327405000000706174683274060000007061
*72616d327406000000717565727932740500000066726167322800000000280000000073450000
*00433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e366331346465766465762e
*6567675c7365747570746f6f6c735c7061636b6167655f696e6465782e707952db000000ba0200
*007322000000000321020d01190206020701220121010f0114020f0210010f02070324011a012c
*02630100000001000000010000004300000073040000007c00005328010000004e280000000028
*010000005216000000280000000028000000007345000000433a5c7461686f652d6c6166735c73
*65747570746f6f6c732d302e366331346465766465762e6567675c7365747570746f6f6c735c70
*61636b6167655f696e6465782e7079740a0000006669785f73665f75726ce30200007302000000
*000163010000000d000000090000004300000073740100007400006900007c00008301005c0600
*7d01007d02007d03007d04007d05007d06007401006902007c03008301007d0700740300690400
*6905007c07008301006f0e00017401006906007c000083010053017c0300690700640100830100
*6fdb00017403006904006908007c07008301006fc800016700007d080078af007403006909007c
*0700830100445d83007d09007c09006402006a02006f290001740a00740300690400690b007c07
*007c0900830200640300830200690c008300007d0a00506e310001740300690400690800740300
*690400690b007c07007c09008302008301006f0e00017c0900640100377d09006e0100017c0800
*690d006404007c09007c09006602001683010001718a00576405007c000016640600640700690b
*007c080083010016177d0a00640f005c02007d0b007d0c006e1000016410005c03007d0b007d0c
*007d0a00740100690e007c00007c0b007c0c00680100640d00640e0036740f006910007c0a0083
*01008305005328110000007337000000526561642061206c6f63616c20706174682c2077697468
*207370656369616c20737570706f727420666f72206469726563746f726965735210000000730a
*000000696e6465782e68746d6c7402000000726273110000003c6120687265663d25723e25733c
*2f613e731d0000003c68746d6c3e3c686561643e3c7469746c653e25733c2f7469746c653e731d
*0000003c2f686561643e3c626f64793e25733c2f626f64793e3c2f68746d6c3e73010000000a69
*c800000074020000004f4b6994010000730e00000050617468206e6f7420666f756e6473090000
*004e6f7420666f756e647309000000746578742f68746d6c730c000000636f6e74656e742d7479
*7065280200000069c800000073020000004f4b28030000006994010000730e0000005061746820
*6e6f7420666f756e6473090000004e6f7420666f756e6428110000005212000000521300000052
*e6000000523200000052190000007406000000697366696c655203010000520b000000527a0000
*00527c00000052c70000005239000000527000000052aa00000052ce0000007409000000635374
*72696e67494f7408000000537472696e67494f280d000000521600000052170000005218000000
*52190000007405000000706172616d521b00000052990000005233000000740500000066696c65
*7352760000007404000000626f6479740600000073746174757374070000006d65737361676528
*0000000028000000007345000000433a5c7461686f652d6c6166735c7365747570746f6f6c732d
*302e366331346465766465762e6567675c7365747570746f6f6c735c7061636b6167655f696e64
*65782e707952da000000e60200007328000000000221010f0113010e0123010601100006010d01
*2401050122010e011b020701140110020f020f01283700000052ed000000740300000073797374
*070000006f732e70617468523200000052590000005212000000521300000052c5000000740600
*000072616e646f6d7406000000736f636b65745213010000740d000000706b675f7265736f7572
*6365737409000000646973747574696c7352010000007410000000646973747574696c732e6572
*726f727352020000007407000000686173686c69625203000000740b000000496d706f72744572
*726f727407000000666e6d617463685204000000525a0000005220000000740100000049524600
*00005296000000522100000052650000005215000000522b00000074070000005f5f616c6c5f5f
*5207000000521d000000520a0000005206000000521f0000005234000000528900000052080000
*0052400000005250000000740b0000005f5f76657273696f6e5f5f740700000072657175697265
*52c2000000520201000052530000005205000000529700000052f700000052f200000052f60000
*00524800000052db000000520f01000052da000000280000000028000000002800000000734500
*0000433a5c7461686f652d6c6166735c7365747570746f6f6c732d302e36633134646576646576
*2e6567675c7365747570746f6f6c735c7061636b6167655f696e6465782e707974080000003c6d
*6f64756c653e01000000734a00000006016c010a0110011001030114010e01150110020f011502
*0601090318010c0309010903090f09060c0c0c170c0812211503091103011d0416ff00ff000012
*020906090b091409290903
addfile ./setuptools-0.6c14devdev.egg/setuptools/sandbox.py
hunk ./setuptools-0.6c14devdev.egg/setuptools/sandbox.py 1
+import os, sys, __builtin__, tempfile, operator
+_os = sys.modules[os.name]
+_open = open
+from distutils.errors import DistutilsError
+__all__ = [
+    "AbstractSandbox", "DirectorySandbox", "SandboxViolation", "run_setup",
+]
+def run_setup(setup_script, args):
+    """Run a distutils setup script, sandboxed in its directory"""
+    old_dir = os.getcwd()
+    save_argv = sys.argv[:]
+    save_path = sys.path[:]
+    setup_dir = os.path.abspath(os.path.dirname(setup_script))
+    temp_dir = os.path.join(setup_dir,'temp')
+    if not os.path.isdir(temp_dir): os.makedirs(temp_dir)
+    save_tmp = tempfile.tempdir
+    save_modules = sys.modules.copy()
+    try:
+        tempfile.tempdir = temp_dir; os.chdir(setup_dir)
+        try:
+            sys.argv[:] = [setup_script]+list(args)
+            sys.path.insert(0, setup_dir)
+            DirectorySandbox(setup_dir).run(
+                lambda: execfile(
+                    "setup.py",
+                    {'__file__':setup_script, '__name__':'__main__'}
+                )
+            )
+        except SystemExit, v:
+            if v.args and v.args[0]:
+                raise
+            # Normal exit, just return
+    finally:
+        sys.modules.update(save_modules)
+        for key in list(sys.modules):
+            if key not in save_modules: del sys.modules[key]
+        os.chdir(old_dir)
+        sys.path[:] = save_path
+        sys.argv[:] = save_argv
+        tempfile.tempdir = save_tmp
+
+class AbstractSandbox:
+    """Wrap 'os' module and 'open()' builtin for virtualizing setup scripts"""
+
+    _active = False
+
+    def __init__(self):
+        self._attrs = [
+            name for name in dir(_os)
+                if not name.startswith('_') and hasattr(self,name)
+        ]
+
+    def _copy(self, source):
+        for name in self._attrs:
+            setattr(os, name, getattr(source,name))
+
+    def run(self, func):
+        """Run 'func' under os sandboxing"""
+        try:
+            self._copy(self)
+            __builtin__.open = __builtin__.file = self._open
+            self._active = True
+            return func()
+        finally:
+            self._active = False
+            __builtin__.open = __builtin__.file = _open
+            self._copy(_os)
+
+
+    def _mk_dual_path_wrapper(name):
+        original = getattr(_os,name)
+        def wrap(self,src,dst,*args,**kw):
+            if self._active:
+                src,dst = self._remap_pair(name,src,dst,*args,**kw)
+            return original(src,dst,*args,**kw)
+        return wrap
+
+
+    for name in ["rename", "link", "symlink"]:
+        if hasattr(_os,name): locals()[name] = _mk_dual_path_wrapper(name)
+
+
+    def _mk_single_path_wrapper(name, original=None):
+        original = original or getattr(_os,name)
+        def wrap(self,path,*args,**kw):
+            if self._active:
+                path = self._remap_input(name,path,*args,**kw)
+            return original(path,*args,**kw)
+        return wrap
+
+    _open = _mk_single_path_wrapper('file', _open)
+    for name in [
+        "stat", "listdir", "chdir", "open", "chmod", "chown", "mkdir",
+        "remove", "unlink", "rmdir", "utime", "lchown", "chroot", "lstat",
+        "startfile", "mkfifo", "mknod", "pathconf", "access"
+    ]:
+        if hasattr(_os,name): locals()[name] = _mk_single_path_wrapper(name)
+
+
+    def _mk_single_with_return(name):
+        original = getattr(_os,name)
+        def wrap(self,path,*args,**kw):
+            if self._active:
+                path = self._remap_input(name,path,*args,**kw)
+                return self._remap_output(name, original(path,*args,**kw))
+            return original(path,*args,**kw)
+        return wrap
+
+    for name in ['readlink', 'tempnam']:
+        if hasattr(_os,name): locals()[name] = _mk_single_with_return(name)
+
+    def _mk_query(name):
+        original = getattr(_os,name)
+        def wrap(self,*args,**kw):
+            retval = original(*args,**kw)
+            if self._active:
+                return self._remap_output(name, retval)
+            return retval
+        return wrap
+
+    for name in ['getcwd', 'tmpnam']:
+        if hasattr(_os,name): locals()[name] = _mk_query(name)
+
+    def _validate_path(self,path):
+        """Called to remap or validate any path, whether input or output"""
+        return path
+
+    def _remap_input(self,operation,path,*args,**kw):
+        """Called for path inputs"""
+        return self._validate_path(path)
+
+    def _remap_output(self,operation,path):
+        """Called for path outputs"""
+        return self._validate_path(path)
+
+    def _remap_pair(self,operation,src,dst,*args,**kw):
+        """Called for path pairs like rename, link, and symlink operations"""
+        return (
+            self._remap_input(operation+'-from',src,*args,**kw),
+            self._remap_input(operation+'-to',dst,*args,**kw)
+        )
+
+
+class DirectorySandbox(AbstractSandbox):
+    """Restrict operations to a single subdirectory - pseudo-chroot"""
+
+    write_ops = dict.fromkeys([
+        "open", "chmod", "chown", "mkdir", "remove", "unlink", "rmdir",
+        "utime", "lchown", "chroot", "mkfifo", "mknod", "tempnam",
+    ])
+
+    def __init__(self,sandbox):
+        self._sandbox = os.path.normcase(os.path.realpath(sandbox))
+        self._prefix = os.path.join(self._sandbox,'')
+        AbstractSandbox.__init__(self)
+
+    def _violation(self, operation, *args, **kw):
+        raise SandboxViolation(operation, args, kw)
+
+    def _open(self, path, mode='r', *args, **kw):
+        if mode not in ('r', 'rt', 'rb', 'rU', 'U') and not self._ok(path):
+            self._violation("open", path, mode, *args, **kw)
+        return _open(path,mode,*args,**kw)
+
+    def tmpnam(self):
+        self._violation("tmpnam")
+
+    def _ok(self,path):
+        active = self._active
+        try:
+            self._active = False
+            realpath = os.path.normcase(os.path.realpath(path))
+            if realpath==self._sandbox or realpath.startswith(self._prefix):
+                return True
+        finally:
+            self._active = active
+
+    def _remap_input(self,operation,path,*args,**kw):
+        """Called for path inputs"""
+        if operation in self.write_ops and not self._ok(path):
+            self._violation(operation, os.path.realpath(path), *args, **kw)
+        return path
+
+    def _remap_pair(self,operation,src,dst,*args,**kw):
+        """Called for path pairs like rename, link, and symlink operations"""
+        if not self._ok(src) or not self._ok(dst):
+            self._violation(operation, src, dst, *args, **kw)
+        return (src,dst)
+
+    def open(self, file, flags, mode=0777):
+        """Called for low-level os.open()"""
+        if flags & WRITE_FLAGS and not self._ok(file):
+            self._violation("os.open", file, flags, mode)
+        return _os.open(file,flags,mode)
+
+
+WRITE_FLAGS = reduce(
+    operator.or_,
+    [getattr(_os, a, 0) for a in
+        "O_WRONLY O_RDWR O_APPEND O_CREAT O_TRUNC O_TEMPORARY".split()]
+)
+
+
+
+
+class SandboxViolation(DistutilsError):
+    """A setup script attempted to modify the filesystem outside the sandbox"""
+
+    def __str__(self):
+        return """SandboxViolation: %s%r %s
+
+The package setup script has attempted to modify files on your system
+that are not within the EasyInstall build area, and has been aborted.
+
+This package cannot be safely installed by EasyInstall, and may not
+support alternate installation locations even if you run its setup
+script by hand.  Please inform the package's author and the EasyInstall
+maintainers to find out if a fix or workaround is available.""" % self.args
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#
addfile ./setuptools-0.6c14devdev.egg/setuptools/sandbox.pyc
binary ./setuptools-0.6c14devdev.egg/setuptools/sandbox.pyc
oldhex
*
newhex
*d1f20d0a4e1ef84b6300000000000000000f0000004000000073ff0000006400006401006b0000
*5a00006400006401006b01005a01006400006401006b02005a02006400006401006b03005a0300
*6400006401006b04005a0400650100690500650000690600195a07006508005a09006400006402
*006b0a006c0b005a0b00016403006404006405006406006704005a0c006407008400005a0d0064
*0300640d00640800840000830000595a0e00640400650e00660100640900840000830000595a0f
*00651000650400691100670000045a1200640a00691300830000445d19005a1400651200651500
*650700651400640b008303001271c0005b12008302005a1600640500650b00660100640c008400
*00830000595a170064010053280e00000069ffffffff4e2801000000740e000000446973747574
*696c734572726f72740f000000416273747261637453616e64626f787410000000446972656374
*6f727953616e64626f78741000000053616e64626f7856696f6c6174696f6e740900000072756e
*5f736574757063020000000b0000000e0000000300000073a10100007400006901008300007d02
*007402006903001e7d03007402006904001e7d0400740000690400690500740000690400690600
*8800008301008301007d05007400006904006907007c05006401008302007d0600740000690400
*6908007c0600830100701100017400006909007c0600830100016e010001740a00690b007d0700
*740200690c00690d008300007d08007a9b007c0600740a005f0b00740000690e007c0500830100
*01794a00880000670100740f007c01008301001774020069030028740200690400691000640200
*7c0500830200017411007c050083010069120087000066010064030086000083010001576e3400
*047413006a0a006f280001017d0900017c09006914006f1500017c0900691400640200196f0700
*01820000712901016e0200015857640400740200690c006915007c080083010001783200740f00
*740200690c00830100445d21007d0a007c0a007c08006a07006f0e0001740200690c007c0a003d
*714d0101714d0157740000690e007c0200830100017c0400740200690400287c03007402006903
*00287c0700740a005f0b0058640400532805000000733800000052756e20612064697374757469
*6c73207365747570207363726970742c2073616e64626f78656420696e20697473206469726563
*746f7279740400000074656d7069000000006300000000000000000500000013000000731b0000
*007400006400006802008800006401003664020064030036830200532804000000730800000073
*657475702e707974080000005f5f66696c655f5f74080000005f5f6d61696e5f5f74080000005f
*5f6e616d655f5f280100000074080000006578656366696c6528000000002801000000740c0000
*0073657475705f7363726970742800000000732b0000006275696c645c62646973742e77696e33
*325c6567675c7365747570746f6f6c735c73616e64626f782e707974080000003c6c616d626461
*3e180000007304000000030103014e281600000074020000006f73740600000067657463776474
*030000007379737404000000617267767404000000706174687407000000616273706174687407
*0000006469726e616d6574040000006a6f696e7405000000697364697274080000006d616b6564
*697273740800000074656d7066696c65740700000074656d7064697274070000006d6f64756c65
*737404000000636f70797405000000636864697274040000006c6973747406000000696e736572
*745202000000740300000072756e740a00000053797374656d4578697474040000006172677374
*06000000757064617465280b000000520a000000521f00000074070000006f6c645f6469727409
*000000736176655f617267767409000000736176655f70617468740900000073657475705f6469
*72740800000074656d705f6469727408000000736176655f746d70740c000000736176655f6d6f
*64756c657374010000007674030000006b657928000000002801000000520a000000732b000000
*6275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c73616e64626f
*782e7079520400000008000000733a00000000020c010a010a011e0115011300110109010f0103
*0109000d010301170113010c0114051001180110031001100006010d0012010d010a010a016300
*00000000000000150000004200000073b70100006500005a01006400005a02006503005a040064
*01008400005a05006402008400005a06006403008400005a07006404008400005a0800783e0064
*0500640600640700670300445d2d005a0900650a00650b006509008302006f1700016508006509
*00830100650c008300006509003c71460001714600576427006408008401005a0e00650e006409
*00650f008302005a0f00786e00640a00640b00640c00640d00640e00640f006410006411006412
*00641300641400641500641600641700641800641900641a00641b00641c00671300445d2d005a
*0900650a00650b006509008302006f170001650e00650900830100650c008300006509003c71d2
*000171d20057641d008400005a1000783b00641e00641f00670200445d2d005a0900650a00650b
*006509008302006f170001651000650900830100650c008300006509003c711901017119015764
*20008400005a1100783b00642100642200670200445d2d005a0900650a00650b00650900830200
*6f170001651100650900830100650c008300006509003c71600101716001576423008400005a12
*006424008400005a13006425008400005a14006426008400005a15005253282800000073440000
*005772617020276f7327206d6f64756c6520616e6420276f70656e282927206275696c74696e20
*666f72207669727475616c697a696e672073657475702073637269707473630100000003000000
*05000000430000007353000000670000047d0100740000740100830100445d32007d02007c0200
*6902006401008301000c6f1b00017403007c00007c02008302006f0b00017c01007c0200127111
*00017111007e01007c00005f04006400005328020000004e74010000005f280500000074030000
*0064697274030000005f6f73740a00000073746172747377697468740700000068617361747472
*74060000005f61747472732803000000740400000073656c6674040000005f5b315d7404000000
*6e616d6528000000002800000000732b0000006275696c645c62646973742e77696e33325c6567
*675c7365747570746f6f6c735c73616e64626f782e707974080000005f5f696e69745f5f2f0000
*0073040000000002170163020000000300000007000000430000007331000000782a007c000069
*0000445d1f007d02007401007402007c02007403007c01007c020083020083030001710a005764
*00005328010000004e2804000000522f000000740700000073657461747472520c000000740700
*000067657461747472280300000052300000007406000000736f75726365523200000028000000
*002800000000732b0000006275696c645c62646973742e77696e33325c6567675c736574757074
*6f6f6c735c73616e64626f782e707974050000005f636f707935000000730600000000010a0006
*01630200000002000000070000004300000073620000007a34007c00006900007c000083010001
*7c0000690100047402005f03007402005f04007405007c00005f06007c01008300005357640100
*7407007c00005f0600740100047402005f03007402005f04007c00006900007408008301000158
*640100532802000000731e00000052756e202766756e632720756e646572206f732073616e6462
*6f78696e674e2809000000523700000074050000005f6f70656e740b0000005f5f6275696c7469
*6e5f5f74040000006f70656e740400000066696c6574040000005472756574070000005f616374
*697665740500000046616c7365522c00000028020000005230000000740400000066756e632800
*0000002800000000732b0000006275696c645c62646973742e77696e33325c6567675c73657475
*70746f6f6c735c73616e64626f782e7079521d000000390000007310000000000203010d011301
*09010b020901100163010000000200000003000000030000007325000000740000740100880000
*8302008901008700008701006602006401008600007d01007c01005328020000004e6303000000
*05000000060000001f00000073420000007c00006900006f2500017c00006901008800007c0100
*7c02007c03007c04008e03005c02007d01007d02006e0100018801007c01007c02007c03007c04
*008e02005328010000004e2802000000523d000000740b0000005f72656d61705f706169722805
*000000523000000074030000007372637403000000647374521f00000074020000006b77280200
*0000523200000074080000006f726967696e616c2800000000732b0000006275696c645c626469
*73742e77696e33325c6567675c7365747570746f6f6c735c73616e64626f782e70797404000000
*7772617048000000730600000000010a01250128020000005235000000522c0000002802000000
*523200000052450000002800000000280200000052320000005244000000732b0000006275696c
*645c62646973742e77696e33325c6567675c7365747570746f6f6c735c73616e64626f782e7079
*74150000005f6d6b5f6475616c5f706174685f7772617070657246000000730600000000010f01
*1204740600000072656e616d6574040000006c696e6b740700000073796d6c696e6b6302000000
*030000000300000003000000732c000000880100700d0001740000740100880000830200890100
*8700008701006602006401008600007d02007c02005328020000004e6302000000040000000500
*00001f00000073360000007c00006900006f1c00017c00006901008800007c01007c02007c0300
*8e02007d01006e0100018801007c01007c02007c03008e01005328010000004e2802000000523d
*000000740c0000005f72656d61705f696e707574280400000052300000005210000000521f0000
*0052430000002802000000523200000052440000002800000000732b0000006275696c645c6264
*6973742e77696e33325c6567675c7365747570746f6f6c735c73616e64626f782e707952450000
*0055000000730600000000010a011c0128020000005235000000522c0000002803000000523200
*0000524400000052450000002800000000280200000052320000005244000000732b0000006275
*696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c73616e64626f782e
*707974170000005f6d6b5f73696e676c655f706174685f77726170706572530000007306000000
*000116011204523b00000074040000007374617474070000006c697374646972521a000000523a
*000000740500000063686d6f64740500000063686f776e74050000006d6b646972740600000072
*656d6f76657406000000756e6c696e6b7405000000726d64697274050000007574696d65740600
*00006c63686f776e74060000006368726f6f7474050000006c7374617474090000007374617274
*66696c6574060000006d6b6669666f74050000006d6b6e6f64740800000070617468636f6e6674
*060000006163636573736301000000020000000300000003000000732500000074000074010088
*00008302008901008700008701006602006401008600007d01007c01005328020000004e630200
*000004000000060000001f000000734f0000007c00006900006f3500017c00006901008800007c
*01007c02007c03008e02007d01007c00006902008800008801007c01007c02007c03008e010083
*020053018801007c01007c02007c03008e01005328010000004e2803000000523d000000524a00
*0000740d0000005f72656d61705f6f7574707574280400000052300000005210000000521f0000
*0052430000002802000000523200000052440000002800000000732b0000006275696c645c6264
*6973742e77696e33325c6567675c7365747570746f6f6c735c73616e64626f782e707952450000
*0066000000730800000000010a0118011d0128020000005235000000522c000000280200000052
*3200000052450000002800000000280200000052320000005244000000732b0000006275696c64
*5c62646973742e77696e33325c6567675c7365747570746f6f6c735c73616e64626f782e707974
*160000005f6d6b5f73696e676c655f776974685f72657475726e64000000730600000000010f01
*12057408000000726561646c696e6b740700000074656d706e616d630100000002000000030000
*000300000073250000007400007401008800008302008901008700008701006602006401008600
*007d01007c01005328020000004e630100000004000000030000001f000000732e000000880100
*7c01007c02008e00007d03007c00006900006f1100017c00006901008800007c03008302005301
*7c03005328010000004e2802000000523d000000525d00000028040000005230000000521f0000
*005243000000740600000072657476616c2802000000523200000052440000002800000000732b
*0000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c73616e
*64626f782e7079524500000072000000730800000000010f010a01110128020000005235000000
*522c00000028020000005232000000524500000028000000002802000000523200000052440000
*00732b0000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c
*73616e64626f782e707974090000005f6d6b5f717565727970000000730600000000010f011205
*520d0000007406000000746d706e616d630200000002000000010000004300000073040000007c
*0100532801000000733d00000043616c6c656420746f2072656d6170206f722076616c69646174
*6520616e7920706174682c207768657468657220696e707574206f72206f757470757428000000
*0028020000005230000000521000000028000000002800000000732b0000006275696c645c6264
*6973742e77696e33325c6567675c7365747570746f6f6c735c73616e64626f782e7079740e0000
*005f76616c69646174655f706174687c0000007302000000000263030000000500000002000000
*4f000000730d0000007c00006900007c0200830100532801000000731600000043616c6c656420
*666f72207061746820696e70757473280100000052640000002805000000523000000074090000
*006f7065726174696f6e5210000000521f000000524300000028000000002800000000732b0000
*006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c73616e6462
*6f782e7079524a0000008000000073020000000002630300000003000000020000004300000073
*0d0000007c00006900007c0200830100532801000000731700000043616c6c656420666f722070
*617468206f75747075747328010000005264000000280300000052300000005265000000521000
*000028000000002800000000732b0000006275696c645c62646973742e77696e33325c6567675c
*7365747570746f6f6c735c73616e64626f782e7079525d00000084000000730200000000026304
*00000006000000060000004f00000073360000007c00006900007c0100640100177c02007c0400
*7c05008e02007c00006900007c0100640200177c03007c04007c05008e02006602005328030000
*00733f00000043616c6c656420666f722070617468207061697273206c696b652072656e616d65
*2c206c696e6b2c20616e642073796d6c696e6b206f7065726174696f6e7373050000002d66726f
*6d73030000002d746f2801000000524a0000002806000000523000000052650000005241000000
*5242000000521f000000524300000028000000002800000000732b0000006275696c645c626469
*73742e77696e33325c6567675c7365747570746f6f6c735c73616e64626f782e70795240000000
*880000007304000000000319014e28160000005208000000740a0000005f5f6d6f64756c655f5f
*74070000005f5f646f635f5f523e000000523d00000052330000005237000000521d0000005246
*0000005232000000522e000000522c00000074060000006c6f63616c7374040000004e6f6e6552
*4b0000005238000000525e00000052620000005264000000524a000000525d0000005240000000
*280000000028000000002800000000732b0000006275696c645c62646973742e77696e33325c65
*67675c7365747570746f6f6c735c73616e64626f782e707952010000002a000000734200000006
*010602060209060904090d09091000060110001b030c080f010301150115011300060210001b03
*09090d00060110001b0209090d00060110001b020904090409046300000000000000000e000000
*4200000073920000006500005a01006400005a0200650300690400640100640200640300640400
*640500640600640700640800640900640a00640b00640c00640d00670d008301005a0500640e00
*8400005a0600640f008400005a07006410006411008401005a08006412008400005a0900641300
*8400005a0a006414008400005a0b006415008400005a0c006416006417008401005a0d00525328
*18000000733c0000005265737472696374206f7065726174696f6e7320746f20612073696e676c
*65207375626469726563746f7279202d2070736575646f2d6368726f6f74523a000000524e0000
*00524f000000525000000052510000005252000000525300000052540000005255000000525600
*00005259000000525a00000052600000006302000000020000000300000043000000734d000000
*7400006901006902007400006901006903007c01008301008301007c00005f0400740000690100
*6905007c00006904006401008302007c00005f06007407006908007c0000830100016400005328
*020000004e74000000002809000000520c000000521000000074080000006e6f726d6361736574
*080000007265616c7061746874080000005f73616e64626f78521300000074070000005f707265
*6669785201000000523300000028020000005230000000740700000073616e64626f7828000000
*002800000000732b0000006275696c645c62646973742e77696e33325c6567675c736574757074
*6f6f6c735c73616e64626f782e70795233000000980000007306000000000121011b0163020000
*0004000000040000004f00000073160000007400007c01007c02007c0300830300820100640000
*5328010000004e28010000005203000000280400000052300000005265000000521f0000005243
*00000028000000002800000000732b0000006275696c645c62646973742e77696e33325c656767
*5c7365747570746f6f6c735c73616e64626f782e7079740a0000005f76696f6c6174696f6e9d00
*000073020000000001740100000072630300000005000000060000004f000000734e0000007c02
*006407006a07006f2e00017c00006900007c01008301000c6f1d00017c00006901006406007c01
*007c02007c03007c04008e0300016e0100017402007c01007c02007c03007c04008e0200532808
*0000004e5271000000740200000072747402000000726274020000007255740100000055523a00
*000028050000005271000000527200000073020000007262730200000072555275000000280300
*000074030000005f6f6b5270000000523800000028050000005230000000521000000074040000
*006d6f6465521f000000524300000028000000002800000000732b0000006275696c645c626469
*73742e77696e33325c6567675c7365747570746f6f6c735c73616e64626f782e70795238000000
*a0000000730600000000011e011d01630100000001000000020000004300000073110000007c00
*00690000640100830100016400005328020000004e526300000028010000005270000000280100
*0000523000000028000000002800000000732b0000006275696c645c62646973742e77696e3332
*5c6567675c7365747570746f6f6c735c73616e64626f782e70795263000000a500000073020000
*0000016302000000040000000600000043000000736d0000007c00006900007d02007a53007401
*007c00005f00007402006903006904007402006903006905007c01008301008301007d03007c03
*007c00006906006a0200701300017c03006907007c00006908008301006f050001740900530157
*6400007c02007c00005f0000586400005328010000004e280a000000523d000000523e00000052
*0c0000005210000000526b000000526c000000526d000000522d000000526e000000523c000000
*2804000000523000000052100000007406000000616374697665526c0000002800000000280000
*0000732b0000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c73
*5c73616e64626f782e70795276000000a8000000730e00000000010901030109011e0123010902
*630300000005000000050000004f000000734b0000007c01007c00006900006a06006f3700017c
*00006901007c02008301000c6f2600017c00006902007c01007403006904006905007c02008301
*007c03007c04008e0200016e0100017c0200532801000000731600000043616c6c656420666f72
*207061746820696e707574732806000000740900000077726974655f6f70735276000000527000
*0000520c0000005210000000526c0000002805000000523000000052650000005210000000521f
*000000524300000028000000002800000000732b0000006275696c645c62646973742e77696e33
*325c6567675c7365747570746f6f6c735c73616e64626f782e7079524a000000b2000000730600
*0000000221012601630400000006000000060000004f00000073490000007c00006900007c0200
*8301000c701100017c00006900007c03008301000c6f1d00017c00006901007c01007c02007c03
*007c04007c05008e0300016e0100017c02007c0300660200532801000000733f00000043616c6c
*656420666f722070617468207061697273206c696b652072656e616d652c206c696e6b2c20616e
*642073796d6c696e6b206f7065726174696f6e7328020000005276000000527000000028060000
*005230000000526500000052410000005242000000521f00000052430000002800000000280000
*0000732b0000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c73
*5c73616e64626f782e70795240000000b80000007306000000000222011d0169ff010000630400
*000004000000050000004300000073490000007c0200740000406f2b00017c00006901007c0100
*8301000c6f1a00017c00006902006401007c01007c02007c0300830400016e0100017403006904
*007c01007c02007c0300830300532802000000731e00000043616c6c656420666f72206c6f772d
*6c6576656c206f732e6f70656e282973070000006f732e6f70656e2805000000740b0000005752
*4954455f464c41475352760000005270000000522c000000523a00000028040000005230000000
*523b0000007405000000666c616773527700000028000000002800000000732b0000006275696c
*645c62646973742e77696e33325c6567675c7365747570746f6f6c735c73616e64626f782e7079
*523a000000be000000730600000000021c011a01280e0000005208000000526600000052670000
*00740400000064696374740800000066726f6d6b65797352790000005233000000527000000052
*3800000052630000005276000000524a0000005240000000523a00000028000000002800000000
*2800000000732b0000006275696c645c62646973742e77696e33325c6567675c7365747570746f
*6f6c735c73616e64626f782e7079520200000090000000731800000006010602060115011b0309
*0509030c050903090a0906090673340000004f5f57524f4e4c59204f5f52445752204f5f415050
*454e44204f5f4352454154204f5f5452554e43204f5f54454d504f524152596900000000630000
*000000000000010000004200000073170000006500005a01006400005a02006401008400005a03
*00525328020000007345000000412073657475702073637269707420617474656d707465642074
*6f206d6f64696679207468652066696c6573797374656d206f757473696465207468652073616e
*64626f786301000000010000000200000043000000730b0000006401007c000069000016532802
*0000004e73b301000053616e64626f7856696f6c6174696f6e3a20257325722025730a0a546865
*207061636b616765207365747570207363726970742068617320617474656d7074656420746f20
*6d6f646966792066696c6573206f6e20796f75722073797374656d0a7468617420617265206e6f
*742077697468696e207468652045617379496e7374616c6c206275696c6420617265612c20616e
*6420686173206265656e2061626f727465642e0a0a54686973207061636b6167652063616e6e6f
*7420626520736166656c7920696e7374616c6c65642062792045617379496e7374616c6c2c2061
*6e64206d6179206e6f740a737570706f727420616c7465726e61746520696e7374616c6c617469
*6f6e206c6f636174696f6e73206576656e20696620796f752072756e206974732073657475700a
*7363726970742062792068616e642e2020506c6561736520696e666f726d20746865207061636b
*616765277320617574686f7220616e64207468652045617379496e7374616c6c0a6d61696e7461
*696e65727320746f2066696e64206f7574206966206120666978206f7220776f726b61726f756e
*6420697320617661696c61626c652e2801000000521f0000002801000000523000000028000000
*002800000000732b0000006275696c645c62646973742e77696e33325c6567675c736574757074
*6f6f6c735c73616e64626f782e707974070000005f5f7374725f5fd10000007302000000000928
*04000000520800000052660000005267000000527e000000280000000028000000002800000000
*732b0000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c73
*616e64626f782e70795203000000ce00000073040000000601060228000000002818000000520c
*000000520e0000005239000000521600000074080000006f70657261746f725218000000523200
*0000522c000000523a00000052380000007410000000646973747574696c732e6572726f727352
*0000000074070000005f5f616c6c5f5f5204000000520100000052020000007406000000726564
*75636574030000006f725f5231000000740500000073706c69747401000000615235000000527a
*0000005203000000280000000028000000002800000000732b0000006275696c645c6264697374
*2e77696e33325c6567675c7365747570746f6f6c735c73616e64626f782e707974080000003c6d
*6f64756c653e0100000073180000003c0110010601100212020922136616350301060107012f06
*
addfile ./setuptools-0.6c14devdev.egg/setuptools/site-patch.py
hunk ./setuptools-0.6c14devdev.egg/setuptools/site-patch.py 1
+def __boot():
+    import sys, imp, os, os.path
+    PYTHONPATH = os.environ.get('PYTHONPATH')
+    if PYTHONPATH is None or (sys.platform=='win32' and not PYTHONPATH):
+        PYTHONPATH = []
+    else:
+        PYTHONPATH = PYTHONPATH.split(os.pathsep)
+
+    pic = getattr(sys,'path_importer_cache',{})
+    stdpath = sys.path[len(PYTHONPATH):]
+    mydir = os.path.dirname(__file__)
+    #print "searching",stdpath,sys.path
+
+    for item in stdpath:
+        if item==mydir or not item:
+            continue    # skip if current dir. on Windows, or my own directory
+        importer = pic.get(item)
+        if importer is not None:
+            loader = importer.find_module('site')
+            if loader is not None:
+                # This should actually reload the current module
+                loader.load_module('site')
+                break
+        else:
+            try:
+                stream, path, descr = imp.find_module('site',[item])
+            except ImportError:
+                continue
+            if stream is None:
+                continue
+            try:
+                # This should actually reload the current module
+                imp.load_module('site',stream,path,descr)
+            finally:
+                stream.close()
+            break
+    else:
+        raise ImportError("Couldn't find the real 'site' module")
+
+    #print "loaded", __file__
+
+    known_paths = dict([(makepath(item)[1],1) for item in sys.path]) # 2.2 comp
+
+    oldpos = getattr(sys,'__egginsert',0)   # save old insertion position
+    sys.__egginsert = 0                     # and reset the current one
+
+    for item in PYTHONPATH:
+        addsitedir(item)
+
+    sys.__egginsert += oldpos           # restore effective old position
+
+    d,nd = makepath(stdpath[0])
+    insert_at = None
+    new_path = []
+
+    for item in sys.path:
+        p,np = makepath(item)
+
+        if np==nd and insert_at is None:
+            # We've hit the first 'system' path entry, so added entries go here
+            insert_at = len(new_path)
+
+        if np in known_paths or insert_at is None:
+            new_path.append(item)
+        else:
+            # new path after the insert point, back-insert it
+            new_path.insert(insert_at, item)
+            insert_at += 1
+
+    sys.path[:] = new_path
+
+if __name__=='site':
+    __boot()
+    del __boot
addfile ./setuptools-0.6c14devdev.egg/setuptools/site-patch.pyc
binary ./setuptools-0.6c14devdev.egg/setuptools/site-patch.pyc
oldhex
*
newhex
*d1f20d0a4f1ef84b630000000000000000020000004000000073280000006400008400005a0000
*6501006401006a02006f0e0001650000830000015b00006e010001640200532803000000630000
*000016000000110000004300000073fd0200006401006400006b00007d00006401006400006b01
*007d01006401006400006b02007d02006401006400006b03007d02007c02006904006905006402
*008301007d03007c03006400006a0800701800017c00006907006403006a02006f1200017c0300
*0c6f0a00016700007d03006e1300017c03006908007c02006909008301007d0300740a007c0000
*6404006800008303007d04007c0000690b00740c007c03008301001f7d05007c0200690b00690d
*00740e008301007d060078fc007c0500445de8007d07007c07007c06006a0200700800017c0700
*0c6f07000171c1006e0100017c04006905007c07008301007d08007c08006400006a09006f3200
*017c0800690f006405008301007d09007c09006400006a09006f1200017c090069100064050083
*0100015071a9010171c100017922007c0100690f006405007c07006701008302005c03007d0a00
*7d0b007d0c00576e1600047411006a0a006f0a000101010171c1006e020001587c0a006400006a
*08006f07000171c1006e0100017a1a007c01006910006405007c0a007c0b007c0c008304000157
*6400007c0a0069120083000001585071c10057741100640600830100820100741300670000047d
*0d007c0000690b00445d1d007d07007c0d007414007c0700830100640700196407006602001271
*ca017e0d008301007d0e00740a007c00006408006409008303007d0f006409007c00005f150078
*18007c0300445d10007d07007416007c070083010001711502577c0000046915007c0f0037025f
*15007414007c0500640900198301005c02007d10007d11006400007d12006700007d1300789200
*7c0000690b00445d87007d07007414007c07008301005c02007d14007d15007c15007c11006a02
*006f1d00017c12006400006a08006f100001740c007c13008301007d12006e0100017c15007c0e
*006a0600700d00017c12006400006a08006f1100017c13006917007c070083010001716402017c
*13006918007c12007c0700830200017c1200640700377d1200716402577c13007c0000690b0028
*64000053280a0000004e69ffffffff740a000000505954484f4e50415448740500000077696e33
*327413000000706174685f696d706f727465725f63616368657404000000736974657324000000
*436f756c646e27742066696e6420746865207265616c20277369746527206d6f64756c65690100
*0000740b0000005f5f656767696e73657274690000000028190000007403000000737973740300
*0000696d7074020000006f7374070000006f732e706174687407000000656e7669726f6e740300
*000067657474040000004e6f6e657408000000706c6174666f726d740500000073706c69747407
*0000007061746873657074070000006765746174747274040000007061746874030000006c656e
*74070000006469726e616d6574080000005f5f66696c655f5f740b00000066696e645f6d6f6475
*6c65740b0000006c6f61645f6d6f64756c65740b000000496d706f72744572726f727405000000
*636c6f736574040000006469637474080000006d616b65706174685204000000740a0000006164
*64736974656469727406000000617070656e647406000000696e73657274281600000052050000
*005206000000520700000052000000007403000000706963740700000073746470617468740500
*00006d7964697274040000006974656d7408000000696d706f7274657274060000006c6f616465
*72740600000073747265616d52100000007405000000646573637274040000005f5b315d740b00
*00006b6e6f776e5f706174687374060000006f6c64706f7374010000006474020000006e647409
*000000696e736572745f617474080000006e65775f7061746874010000007074020000006e7028
*000000002800000000732e0000006275696c645c62646973742e77696e33325c6567675c736574
*7570746f6f6c735c736974652d70617463682e707974060000005f5f626f6f7401000000736200
*000000013001120125010a02120212011301120307000601150107010f010d010f010d020d0109
*02030122010e0108010d01070103021a020b0105020c043a0212010902070006010e020f021601
*060106020a00060112021a0210021a01110310010e0252030000004e2802000000522e00000074
*080000005f5f6e616d655f5f280000000028000000002800000000732e0000006275696c645c62
*646973742e77696e33325c6567675c7365747570746f6f6c735c736974652d70617463682e7079
*74080000003c6d6f64756c653e01000000730600000009470d010701
adddir ./setuptools-0.6c14devdev.egg/setuptools/tests
addfile ./setuptools-0.6c14devdev.egg/setuptools/tests/__init__.py
hunk ./setuptools-0.6c14devdev.egg/setuptools/tests/__init__.py 1
+"""Tests for the 'setuptools' package"""
+from unittest import TestSuite, TestCase, makeSuite, defaultTestLoader
+import distutils.core, distutils.cmd
+from distutils.errors import DistutilsOptionError, DistutilsPlatformError
+from distutils.errors import DistutilsSetupError
+import setuptools, setuptools.dist
+from setuptools import Feature
+from distutils.core import Extension
+extract_constant, get_module_constant = None, None
+from setuptools.depends import *
+from distutils.version import StrictVersion, LooseVersion
+from distutils.util import convert_path
+import sys, os.path
+
+def additional_tests():
+    import doctest, unittest
+    suite = unittest.TestSuite((
+        doctest.DocFileSuite('api_tests.txt',
+                             optionflags=doctest.ELLIPSIS, package=__name__,
+                             ),
+        ))
+    if sys.platform == 'win32':
+        suite.addTest(doctest.DocFileSuite('win_script_wrapper.txt'))
+    return suite
+
+def makeSetup(**args):
+    """Return distribution from 'setup(**args)', without executing commands"""
+
+    distutils.core._setup_stop_after = "commandline"
+
+    # Don't let system command line leak into tests!
+    args.setdefault('script_args',['install'])
+
+    try:
+        return setuptools.setup(**args)
+    finally:
+        distutils.core_setup_stop_after = None
+
+
+
+
+class DependsTests(TestCase):
+
+    def testExtractConst(self):
+        if not extract_constant: return  # skip on non-bytecode platforms
+
+        def f1():
+            global x,y,z
+            x = "test"
+            y = z
+
+        # unrecognized name
+        self.assertEqual(extract_constant(f1.func_code,'q', -1), None)
+
+        # constant assigned
+        self.assertEqual(extract_constant(f1.func_code,'x', -1), "test")
+
+        # expression assigned
+        self.assertEqual(extract_constant(f1.func_code,'y', -1), -1)
+
+        # recognized name, not assigned
+        self.assertEqual(extract_constant(f1.func_code,'z', -1), None)
+
+
+    def testFindModule(self):
+        self.assertRaises(ImportError, find_module, 'no-such.-thing')
+        self.assertRaises(ImportError, find_module, 'setuptools.non-existent')
+        f,p,i = find_module('setuptools.tests'); f.close()
+
+    def testModuleExtract(self):
+        if not get_module_constant: return  # skip on non-bytecode platforms
+        from distutils import __version__
+        self.assertEqual(
+            get_module_constant('distutils','__version__'), __version__
+        )
+        self.assertEqual(
+            get_module_constant('sys','version'), sys.version
+        )
+        self.assertEqual(
+            get_module_constant('setuptools.tests','__doc__'),__doc__
+        )
+
+    def testRequire(self):
+        if not extract_constant: return  # skip on non-bytecode platforms
+
+        req = Require('Distutils','1.0.3','distutils')
+
+        self.assertEqual(req.name, 'Distutils')
+        self.assertEqual(req.module, 'distutils')
+        self.assertEqual(req.requested_version, '1.0.3')
+        self.assertEqual(req.attribute, '__version__')
+        self.assertEqual(req.full_name(), 'Distutils-1.0.3')
+
+        from distutils import __version__
+        self.assertEqual(req.get_version(), __version__)
+        self.failUnless(req.version_ok('1.0.9'))
+        self.failIf(req.version_ok('0.9.1'))
+        self.failIf(req.version_ok('unknown'))
+
+        self.failUnless(req.is_present())
+        self.failUnless(req.is_current())
+
+        req = Require('Distutils 3000','03000','distutils',format=LooseVersion)
+        self.failUnless(req.is_present())
+        self.failIf(req.is_current())
+        self.failIf(req.version_ok('unknown'))
+
+        req = Require('Do-what-I-mean','1.0','d-w-i-m')
+        self.failIf(req.is_present())
+        self.failIf(req.is_current())
+
+        req = Require('Tests', None, 'tests', homepage="http://example.com")
+        self.assertEqual(req.format, None)
+        self.assertEqual(req.attribute, None)
+        self.assertEqual(req.requested_version, None)
+        self.assertEqual(req.full_name(), 'Tests')
+        self.assertEqual(req.homepage, 'http://example.com')
+
+        paths = [os.path.dirname(p) for p in __path__]
+        self.failUnless(req.is_present(paths))
+        self.failUnless(req.is_current(paths))
+
+
+class DistroTests(TestCase):
+
+    def setUp(self):
+        self.e1 = Extension('bar.ext',['bar.c'])
+        self.e2 = Extension('c.y', ['y.c'])
+
+        self.dist = makeSetup(
+            packages=['a', 'a.b', 'a.b.c', 'b', 'c'],
+            py_modules=['b.d','x'],
+            ext_modules = (self.e1, self.e2),
+            package_dir = {},
+        )
+
+
+    def testDistroType(self):
+        self.failUnless(isinstance(self.dist,setuptools.dist.Distribution))
+
+
+    def testExcludePackage(self):
+        self.dist.exclude_package('a')
+        self.assertEqual(self.dist.packages, ['b','c'])
+
+        self.dist.exclude_package('b')
+        self.assertEqual(self.dist.packages, ['c'])
+        self.assertEqual(self.dist.py_modules, ['x'])
+        self.assertEqual(self.dist.ext_modules, [self.e1, self.e2])
+
+        self.dist.exclude_package('c')
+        self.assertEqual(self.dist.packages, [])
+        self.assertEqual(self.dist.py_modules, ['x'])
+        self.assertEqual(self.dist.ext_modules, [self.e1])
+
+        # test removals from unspecified options
+        makeSetup().exclude_package('x')
+
+
+
+
+
+
+
+    def testIncludeExclude(self):
+        # remove an extension
+        self.dist.exclude(ext_modules=[self.e1])
+        self.assertEqual(self.dist.ext_modules, [self.e2])
+
+        # add it back in
+        self.dist.include(ext_modules=[self.e1])
+        self.assertEqual(self.dist.ext_modules, [self.e2, self.e1])
+
+        # should not add duplicate
+        self.dist.include(ext_modules=[self.e1])
+        self.assertEqual(self.dist.ext_modules, [self.e2, self.e1])
+
+    def testExcludePackages(self):
+        self.dist.exclude(packages=['c','b','a'])
+        self.assertEqual(self.dist.packages, [])
+        self.assertEqual(self.dist.py_modules, ['x'])
+        self.assertEqual(self.dist.ext_modules, [self.e1])
+
+    def testEmpty(self):
+        dist = makeSetup()
+        dist.include(packages=['a'], py_modules=['b'], ext_modules=[self.e2])
+        dist = makeSetup()
+        dist.exclude(packages=['a'], py_modules=['b'], ext_modules=[self.e2])
+
+    def testContents(self):
+        self.failUnless(self.dist.has_contents_for('a'))
+        self.dist.exclude_package('a')
+        self.failIf(self.dist.has_contents_for('a'))
+
+        self.failUnless(self.dist.has_contents_for('b'))
+        self.dist.exclude_package('b')
+        self.failIf(self.dist.has_contents_for('b'))
+
+        self.failUnless(self.dist.has_contents_for('c'))
+        self.dist.exclude_package('c')
+        self.failIf(self.dist.has_contents_for('c'))
+
+
+
+
+    def testInvalidIncludeExclude(self):
+        self.assertRaises(DistutilsSetupError,
+            self.dist.include, nonexistent_option='x'
+        )
+        self.assertRaises(DistutilsSetupError,
+            self.dist.exclude, nonexistent_option='x'
+        )
+        self.assertRaises(DistutilsSetupError,
+            self.dist.include, packages={'x':'y'}
+        )
+        self.assertRaises(DistutilsSetupError,
+            self.dist.exclude, packages={'x':'y'}
+        )
+        self.assertRaises(DistutilsSetupError,
+            self.dist.include, ext_modules={'x':'y'}
+        )
+        self.assertRaises(DistutilsSetupError,
+            self.dist.exclude, ext_modules={'x':'y'}
+        )
+
+        self.assertRaises(DistutilsSetupError,
+            self.dist.include, package_dir=['q']
+        )
+        self.assertRaises(DistutilsSetupError,
+            self.dist.exclude, package_dir=['q']
+        )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+class FeatureTests(TestCase):
+
+    def setUp(self):
+        self.req = Require('Distutils','1.0.3','distutils')
+        self.dist = makeSetup(
+            features={
+                'foo': Feature("foo",standard=True,require_features=['baz',self.req]),
+                'bar': Feature("bar",  standard=True, packages=['pkg.bar'],
+                               py_modules=['bar_et'], remove=['bar.ext'],
+                       ),
+                'baz': Feature(
+                        "baz", optional=False, packages=['pkg.baz'],
+                        scripts = ['scripts/baz_it'],
+                        libraries=[('libfoo','foo/foofoo.c')]
+                       ),
+                'dwim': Feature("DWIM", available=False, remove='bazish'),
+            },
+            script_args=['--without-bar', 'install'],
+            packages = ['pkg.bar', 'pkg.foo'],
+            py_modules = ['bar_et', 'bazish'],
+            ext_modules = [Extension('bar.ext',['bar.c'])]
+        )
+
+    def testDefaults(self):
+        self.failIf(
+            Feature(
+                "test",standard=True,remove='x',available=False
+            ).include_by_default()
+        )
+        self.failUnless(
+            Feature("test",standard=True,remove='x').include_by_default()
+        )
+        # Feature must have either kwargs, removes, or require_features
+        self.assertRaises(DistutilsSetupError, Feature, "test")
+
+    def testAvailability(self):
+        self.assertRaises(
+            DistutilsPlatformError,
+            self.dist.features['dwim'].include_in, self.dist
+        )
+
+    def testFeatureOptions(self):
+        dist = self.dist
+        self.failUnless(
+            ('with-dwim',None,'include DWIM') in dist.feature_options
+        )
+        self.failUnless(
+            ('without-dwim',None,'exclude DWIM (default)') in dist.feature_options
+        )
+        self.failUnless(
+            ('with-bar',None,'include bar (default)') in dist.feature_options
+        )
+        self.failUnless(
+            ('without-bar',None,'exclude bar') in dist.feature_options
+        )
+        self.assertEqual(dist.feature_negopt['without-foo'],'with-foo')
+        self.assertEqual(dist.feature_negopt['without-bar'],'with-bar')
+        self.assertEqual(dist.feature_negopt['without-dwim'],'with-dwim')
+        self.failIf('without-baz' in dist.feature_negopt)
+
+    def testUseFeatures(self):
+        dist = self.dist
+        self.assertEqual(dist.with_foo,1)
+        self.assertEqual(dist.with_bar,0)
+        self.assertEqual(dist.with_baz,1)
+        self.failIf('bar_et' in dist.py_modules)
+        self.failIf('pkg.bar' in dist.packages)
+        self.failUnless('pkg.baz' in dist.packages)
+        self.failUnless('scripts/baz_it' in dist.scripts)
+        self.failUnless(('libfoo','foo/foofoo.c') in dist.libraries)
+        self.assertEqual(dist.ext_modules,[])
+        self.assertEqual(dist.require_features, [self.req])
+
+        # If we ask for bar, it should fail because we explicitly disabled
+        # it on the command line
+        self.assertRaises(DistutilsOptionError, dist.include_feature, 'bar')
+
+    def testFeatureWithInvalidRemove(self):
+        self.assertRaises(
+            SystemExit, makeSetup, features = {'x':Feature('x', remove='y')}
+        )
+
+class TestCommandTests(TestCase):
+
+    def testTestIsCommand(self):
+        test_cmd = makeSetup().get_command_obj('test')
+        self.failUnless(isinstance(test_cmd, distutils.cmd.Command))
+
+    def testLongOptSuiteWNoDefault(self):
+        ts1 = makeSetup(script_args=['test','--test-suite=foo.tests.suite'])
+        ts1 = ts1.get_command_obj('test')
+        ts1.ensure_finalized()
+        self.assertEqual(ts1.test_suite, 'foo.tests.suite')
+
+    def testDefaultSuite(self):
+        ts2 = makeSetup(test_suite='bar.tests.suite').get_command_obj('test')
+        ts2.ensure_finalized()
+        self.assertEqual(ts2.test_suite, 'bar.tests.suite')
+
+    def testDefaultWModuleOnCmdLine(self):
+        ts3 = makeSetup(
+            test_suite='bar.tests',
+            script_args=['test','-m','foo.tests']
+        ).get_command_obj('test')
+        ts3.ensure_finalized()
+        self.assertEqual(ts3.test_module, 'foo.tests')
+        self.assertEqual(ts3.test_suite,  'foo.tests.test_suite')
+
+    def testConflictingOptions(self):
+        ts4 = makeSetup(
+            script_args=['test','-m','bar.tests', '-s','foo.tests.suite']
+        ).get_command_obj('test')
+        self.assertRaises(DistutilsOptionError, ts4.ensure_finalized)
+
+    def testNoSuite(self):
+        ts5 = makeSetup().get_command_obj('test')
+        ts5.ensure_finalized()
+        self.assertEqual(ts5.test_suite, None)
+        
+
+
+
+
addfile ./setuptools-0.6c14devdev.egg/setuptools/tests/__init__.pyc
binary ./setuptools-0.6c14devdev.egg/setuptools/tests/__init__.pyc
oldhex
*
newhex
*d1f20d0a501ef84b630000000000000000110000004000000073600100006400005a0000640100
*6402006b01006c02005a02006c03005a03006c04005a04006c05005a0500016401006403006b06
*005a07006401006403006b08005a07006401006404006b09006c0a005a0a006c0b005a0b000164
*01006405006b09006c0c005a0c00016401006403006b0d005a0d006401006403006b0e005a0d00
*6401006406006b0d006c0f005a0f00016401006407006b06006c10005a1000016415005c02005a
*12005a13006401006408006b1400546401006409006b15006c16005a16006c17005a1700016401
*00640a006b18006c19005a1900016401006403006b1a005a1a006401006403006b1b005a1c0064
*0b008400005a1d00640c008400005a1e00640d00650300660100640e00840000830000595a1f00
*640f00650300660100641000840000830000595a20006411006503006601006412008400008300
*00595a2100641300650300660100641400840000830000595a2200640300532816000000732200
*0000546573747320666f722074686520277365747570746f6f6c7327207061636b61676569ffff
*ffff28040000007409000000546573745375697465740800000054657374436173657409000000
*6d616b655375697465741100000064656661756c74546573744c6f616465724e28020000007414
*000000446973747574696c734f7074696f6e4572726f727416000000446973747574696c73506c
*6174666f726d4572726f7228010000007413000000446973747574696c7353657475704572726f
*72280100000074070000004665617475726528010000007409000000457874656e73696f6e2801
*00000074010000002a2802000000740d00000053747269637456657273696f6e740c0000004c6f
*6f736556657273696f6e2801000000740c000000636f6e766572745f7061746863000000000300
*0000090000004300000073700000006401006400006b00007d00006401006400006b01007d0100
*7c01006902007c00006903006402006403007c0000690400640400740500830102660100830100
*7d02007406006907006405006a02006f1a00017c02006908007c00006903006406008301008301
*00016e0100017c02005328070000004e69ffffffff730d0000006170695f74657374732e747874
*740b0000006f7074696f6e666c61677374070000007061636b616765740500000077696e333273
*1600000077696e5f7363726970745f777261707065722e74787428090000007407000000646f63
*746573747408000000756e6974746573745200000000740c000000446f6346696c655375697465
*7408000000454c4c495053495374080000005f5f6e616d655f5f74030000007379737408000000
*706c6174666f726d74070000006164645465737428030000005210000000521100000074050000
*0073756974652800000000280000000073320000006275696c645c62646973742e77696e33325c
*6567675c7365747570746f6f6c735c74657374735c5f5f696e69745f5f2e707974100000006164
*646974696f6e616c5f74657374730f000000730e0000000001180106010c01180310011a016300
*00000001000000060000004b00000073410000006401007400006901005f02007c000069030064
*0200640300670100830200017a11007404006905007c00008d000053576404006404007400005f
*070058640400532805000000734400000052657475726e20646973747269627574696f6e206672
*6f6d20277365747570282a2a6172677329272c20776974686f757420657865637574696e672063
*6f6d6d616e6473740b000000636f6d6d616e646c696e65740b0000007363726970745f61726773
*7407000000696e7374616c6c4e28080000007409000000646973747574696c737404000000636f
*726574110000005f73657475705f73746f705f6166746572740a00000073657464656661756c74
*740a0000007365747570746f6f6c737405000000736574757074040000004e6f6e657415000000
*636f72655f73657475705f73746f705f6166746572280100000074040000006172677328000000
*00280000000073320000006275696c645c62646973742e77696e33325c6567675c736574757074
*6f6f6c735c74657374735c5f5f696e69745f5f2e707974090000006d616b6553657475701a0000
*00730a00000000030c03130203011102740c000000446570656e64735465737473630000000000
*0000000100000042000000732c0000006500005a01006400008400005a02006401008400005a03
*006402008400005a04006403008400005a05005253280400000063010000000200000005000000
*4300000073950000007400007005000164000053016401008400007d01007c0000690100740000
*7c0100690200640200640300830300640000830200017c00006901007400007c01006902006404
*00640300830300640500830200017c00006901007400007c010069020064060064030083030064
*0300830200017c00006901007400007c0100690200640700640300830300640000830200016400
*005328080000004e63000000000000000001000000530000007310000000640100610000740100
*6102006400005328020000004e740400000074657374280300000074010000007874010000007a
*74010000007928000000002800000000280000000073320000006275696c645c62646973742e77
*696e33325c6567675c7365747570746f6f6c735c74657374735c5f5f696e69745f5f2e70797402
*00000066312f00000073040000000002060174010000007169ffffffff52290000005228000000
*522b000000522a00000028040000007410000000657874726163745f636f6e7374616e74740b00
*0000617373657274457175616c740900000066756e635f636f6465522300000028020000007404
*00000073656c66522c0000002800000000280000000073320000006275696c645c62646973742e
*77696e33325c6567675c7365747570746f6f6c735c74657374735c5f5f696e69745f5f2e707974
*100000007465737445787472616374436f6e73742c000000730e00000000010700050209061f03
*1f031f03630100000004000000040000004300000073490000007c000069000074010074020064
*0100830300017c0000690000740100740200640200830300017402006403008301005c03007d01
*007d02007d03007c0100690300830000016400005328040000004e730e0000006e6f2d73756368
*2e2d7468696e6773170000007365747570746f6f6c732e6e6f6e2d6578697374656e7473100000
*007365747570746f6f6c732e74657374732804000000740c000000617373657274526169736573
*740b000000496d706f72744572726f72740b00000066696e645f6d6f64756c657405000000636c
*6f7365280400000052310000007401000000667401000000707401000000692800000000280000
*000073320000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c73
*5c74657374735c5f5f696e69745f5f2e7079740e0000007465737446696e644d6f64756c654100
*0000730800000000011301130115006301000000020000000500000043000000736e0000007400
*007005000164000053016401006402006b01006c02007d0100017c000069030074000064030064
*04008302007c0100830200017c0000690300740000640500640600830200740400690500830200
*017c0000690300740000640700640800830200740600830200016400005328090000004e69ffff
*ffff2801000000740b0000005f5f76657273696f6e5f5f521d000000523b000000521500000074
*0700000076657273696f6e73100000007365747570746f6f6c732e746573747374070000005f5f
*646f635f5f280700000074130000006765745f6d6f64756c655f636f6e7374616e74521d000000
*523b000000522f0000005215000000523c000000523d00000028020000005231000000523b0000
*002800000000280000000073320000006275696c645c62646973742e77696e33325c6567675c73
*65747570746f6f6c735c74657374735c5f5f696e69745f5f2e70797411000000746573744d6f64
*756c65457874726163744600000073120000000001070005011001060113020601160206016301
*000000060000000700000043000000737102000074000070050001640000530174010064010064
*02006403008303007d01007c00006902007c0100690300640100830200017c00006902007c0100
*690400640300830200017c00006902007c0100690500640200830200017c00006902007c010069
*0600640400830200017c00006902007c0100690700830000640500830200016406006407006b08
*006c09007d0200017c00006902007c0100690a008300007c0200830200017c0000690b007c0100
*690c00640800830100830100017c0000690d007c0100690c00640900830100830100017c000069
*0d007c0100690c00640a00830100830100017c0000690b007c0100690e00830000830100017c00
*00690b007c0100690f0083000083010001740100640b00640c00640300640d007410008303017d
*01007c0000690b007c0100690e00830000830100017c0000690d007c0100690f00830000830100
*017c0000690d007c0100690c00640a0083010083010001740100640e00640f006410008303007d
*01007c0000690d007c0100690e00830000830100017c0000690d007c0100690f00830000830100
*017401006411006400006412006413006414008303017d01007c00006902007c01006912006400
*00830200017c00006902007c0100690600640000830200017c00006902007c0100690500640000
*830200017c00006902007c0100690700830000641100830200017c00006902007c010069130064
*140083020001670000047d0300741400445d19007d04007c03007415006916006917007c040083
*010012711f027e03007d05007c0000690b007c0100690e007c0500830100830100017c0000690b
*007c0100690f007c0500830100830100016400005328150000004e740900000044697374757469
*6c737305000000312e302e33521d000000523b000000730f000000446973747574696c732d312e
*302e3369ffffffff2801000000523b0000007305000000312e302e397305000000302e392e3174
*07000000756e6b6e6f776e730e000000446973747574696c732033303030740500000030333030
*307406000000666f726d6174730e000000446f2d776861742d492d6d65616e7303000000312e30
*7307000000642d772d692d6d74050000005465737473740500000074657374737408000000686f
*6d65706167657312000000687474703a2f2f6578616d706c652e636f6d2818000000522e000000
*740700000052657175697265522f00000074040000006e616d6574060000006d6f64756c657411
*0000007265717565737465645f76657273696f6e74090000006174747269627574657409000000
*66756c6c5f6e616d65521d000000523b000000740b0000006765745f76657273696f6e740a0000
*006661696c556e6c657373740a00000076657273696f6e5f6f6b74060000006661696c4966740a
*00000069735f70726573656e74740a00000069735f63757272656e74520b000000522300000052
*43000000524600000074080000005f5f706174685f5f74020000006f7374040000007061746874
*070000006469726e616d65280600000052310000007403000000726571523b0000007404000000
*5f5b315d5238000000740500000070617468732800000000280000000073320000006275696c64
*5c62646973742e77696e33325c6567675c7365747570746f6f6c735c74657374735c5f5f696e69
*745f5f2e7079740b000000746573745265717569726553000000733e0000000001070005021202
*130113011301130116021001160116011601160213011302180113011301160212011301130218
*01130113011301160113022d01160128060000005214000000740a0000005f5f6d6f64756c655f
*5f5232000000523a000000523f000000525a000000280000000028000000002800000000733200
*00006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c74657374
*735c5f5f696e69745f5f2e707952270000002a0000007308000000060209150905090d740b0000
*0044697374726f5465737473630000000000000000010000004200000073500000006500005a01
*006400008400005a02006401008400005a03006402008400005a04006403008400005a05006404
*008400005a06006405008400005a07006406008400005a08006407008400005a09005253280800
*000063010000000100000009000000430000007373000000740000640100640200670100830200
*7c00005f01007400006403006404006701008302007c00005f0200740300640500640600640700
*640800640900640a00670500640b00640c00640d00670200640e007c00006901007c0000690200
*660200640f006800008300047c00005f04006400005328100000004e73070000006261722e6578
*7473050000006261722e637303000000632e797303000000792e6374080000007061636b616765
*737401000000617303000000612e627305000000612e622e63740100000062740100000063740a
*00000070795f6d6f64756c65737303000000622e645229000000740b0000006578745f6d6f6475
*6c6573740b0000007061636b6167655f6469722805000000520800000074020000006531740200
*000065325226000000740400000064697374280100000052310000002800000000280000000073
*320000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c7465
*7374735c5f5f696e69745f5f2e7079740500000073657455707e000000730e0000000001150115
*02060115010c011201630100000001000000040000004300000073230000007c00006900007401
*007c0000690200740300690200690400830200830100016400005328010000004e280500000052
*4e000000740a0000006973696e7374616e636552660000005221000000740c0000004469737472
*69627574696f6e280100000052310000002800000000280000000073320000006275696c645c62
*646973742e77696e33325c6567675c7365747570746f6f6c735c74657374735c5f5f696e69745f
*5f2e7079740e0000007465737444697374726f547970658a000000730200000000016301000000
*01000000040000004300000073ff0000007c0000690000690100640100830100017c0000690200
*7c0000690000690300640200640300670200830200017c0000690000690100640200830100017c
*00006902007c0000690000690300640300670100830200017c00006902007c0000690000690400
*640400670100830200017c00006902007c00006900006905007c00006906007c00006907006702
*00830200017c0000690000690100640300830100017c00006902007c0000690000690300670000
*830200017c00006902007c0000690000690400640400670100830200017c00006902007c000069
*00006905007c000069060067010083020001740800830000690100640400830100016400005328
*050000004e525e000000525f0000005260000000522900000028090000005266000000740f0000
*006578636c7564655f7061636b616765522f000000525d00000052610000005262000000526400
*000052650000005226000000280100000052310000002800000000280000000073320000006275
*696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c74657374735c5f5f
*696e69745f5f2e70797412000000746573744578636c7564655061636b6167658e000000731600
*0000000110011c0210011901190122021001160119011c03630100000001000000040000004300
*000073af0000007c00006900006901006401007c0000690200670100830001017c00006903007c
*00006900006904007c0000690500670100830200017c00006900006906006401007c0000690200
*670100830001017c00006903007c00006900006904007c00006905007c00006902006702008302
*00017c00006900006906006401007c0000690200670100830001017c00006903007c0000690000
*6904007c00006905007c0000690200670200830200016400005328020000004e52620000002807
*000000526600000074070000006578636c7564655264000000522f000000526200000052650000
*007407000000696e636c7564652801000000523100000028000000002800000000733200000062
*75696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c74657374735c5f
*5f696e69745f5f2e7079741200000074657374496e636c7564654578636c756465a5000000730c
*000000000219011c031901220319016301000000010000000500000043000000736b0000007c00
*00690000690100640100640200640300640400670300830001017c00006902007c000069000069
*0300670000830200017c00006902007c0000690000690400640500670100830200017c00006902
*007c00006900006905007c0000690600670100830200016400005328060000004e525d00000052
*60000000525f000000525e000000522900000028070000005266000000526d000000522f000000
*525d00000052610000005262000000526400000028010000005231000000280000000028000000
*0073320000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c
*74657374735c5f5f696e69745f5f2e70797413000000746573744578636c7564655061636b6167
*6573b2000000730800000000011c01160119016301000000020000000700000043000000736600
*00007400008300007d01007c01006901006401006402006701006403006404006701006405007c
*0000690200670100830003017400008300007d01007c0100690300640100640200670100640300
*6404006701006405007c0000690200670100830003016400005328060000004e525d000000525e
*0000005261000000525f000000526200000028040000005226000000526e000000526500000052
*6d0000002802000000523100000052660000002800000000280000000073320000006275696c64
*5c62646973742e77696e33325c6567675c7365747570746f6f6c735c74657374735c5f5f696e69
*745f5f2e7079740900000074657374456d707479b8000000730800000000010901280109016301
*00000001000000030000004300000073ca0000007c00006900007c000069010069020064010083
*0100830100017c0000690100690300640100830100017c00006904007c00006901006902006401
*00830100830100017c00006900007c0000690100690200640200830100830100017c0000690100
*690300640200830100017c00006904007c0000690100690200640200830100830100017c000069
*00007c0000690100690200640300830100830100017c0000690100690300640300830100017c00
*006904007c0000690100690200640300830100830100016400005328040000004e525e00000052
*5f00000052600000002805000000524e000000526600000074100000006861735f636f6e74656e
*74735f666f72526b00000052500000002801000000523100000028000000002800000000733200
*00006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c74657374
*735c5f5f696e69745f5f2e7079740c00000074657374436f6e74656e7473be0000007312000000
*000119011001190219011001190219011001630100000001000000070000004300000073060100
*007c00006900007401007c0000690200690300640100640200830201017c00006900007401007c
*0000690200690400640100640200830201017c00006900007401007c0000690200690300640300
*68010064040064020036830201017c00006900007401007c000069020069040064030068010064
*040064020036830201017c00006900007401007c00006902006903006405006801006404006402
*0036830201017c00006900007401007c0000690200690400640500680100640400640200368302
*01017c00006900007401007c0000690200690300640600640700670100830201017c0000690000
*7401007c0000690200690400640600640700670100830201016400005328080000004e74120000
*006e6f6e6578697374656e745f6f7074696f6e5229000000525d000000522b0000005262000000
*5263000000522d0000002805000000523300000052060000005266000000526e000000526d0000
*00280100000052310000002800000000280000000073320000006275696c645c62646973742e77
*696e33325c6567675c7365747570746f6f6c735c74657374735c5f5f696e69745f5f2e70797419
*00000074657374496e76616c6964496e636c7564654578636c756465ce00000073200000000001
*090113020901130209011a0209011a0209011a0209011a03090116020901280a00000052140000
*00525b0000005267000000526a000000526c000000526f00000052700000005271000000527300
*0000527500000028000000002800000000280000000073320000006275696c645c62646973742e
*77696e33325c6567675c7365747570746f6f6c735c74657374735c5f5f696e69745f5f2e707952
*5c0000007c00000073100000000602090c09040917090d090609060910740c0000004665617475
*726554657374736300000000000000000100000042000000733e0000006500005a010064000084
*00005a02006401008400005a03006402008400005a04006403008400005a05006404008400005a
*06006405008400005a0700525328060000006301000000010000000e0000004300000073fb0000
*007400006401006402006403008303007c00005f01007402006404006804007403006405006406
*007404006407006408007c00006901006702008301026405003674030064090064060074040064
*0a00640b00670100640c00640d00670100640e00640f0067010083010464090036740300640800
*641000740500640a00641100670100641200641300670100641400642100670100830104640800
*36740300641700641800740500640e00641900830102641a0036641b00641c00641d0067020064
*0a00640b00641e00670200640c00640d00641900670200641f00740600640f0064200067010083
*02006701008300057c00005f07006400005328220000004e52400000007305000000312e302e33
*521d000000740800000066656174757265737403000000666f6f74080000007374616e64617264
*7410000000726571756972655f6665617475726573740300000062617a7403000000626172525d
*0000007307000000706b672e626172526100000074060000006261725f6574740600000072656d
*6f766573070000006261722e65787474080000006f7074696f6e616c7307000000706b672e6261
*7a740700000073637269707473730e000000736372697074732f62617a5f697474090000006c69
*6272617269657374060000006c6962666f6f730c000000666f6f2f666f6f666f6f2e6374040000
*004457494d7409000000617661696c61626c65740600000062617a69736874040000006477696d
*521b000000730d0000002d2d776974686f75742d626172521c0000007307000000706b672e666f
*6f526200000073050000006261722e6328020000005282000000730c000000666f6f2f666f6f66
*6f6f2e632808000000524700000052570000005226000000520700000074040000005472756574
*0500000046616c7365520800000052660000002801000000523100000028000000002800000000
*73320000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c74
*657374735c5f5f696e69745f5f2e70795267000000f9000000731e000000000115010601030122
*01180116020301150109010d021c020c010c010c01630100000001000000090000004300000073
*670000007c00006900007401006401006402007402006403006404006405007403008301036904
*00830000830100017c000069050074010064010064020074020064030064040083010269040083
*0000830100017c0000690600740700740100640100830300016400005328060000004e52280000
*005279000000527e00000052290000005284000000280800000052500000005207000000528700
*000052880000007412000000696e636c7564655f62795f64656661756c74524e00000052330000
*005206000000280100000052310000002800000000280000000073320000006275696c645c6264
*6973742e77696e33325c6567675c7365747570746f6f6c735c74657374735c5f5f696e69745f5f
*2e7079740c0000007465737444656661756c74730e010000730c00000000010601030122030601
*1f03630100000001000000040000004300000073270000007c00006900007401007c0000690200
*690300640100196904007c0000690200830300016400005328020000004e528600000028050000
*005233000000520500000052660000005277000000740a000000696e636c7564655f696e280100
*000052310000002800000000280000000073320000006275696c645c62646973742e77696e3332
*5c6567675c7365747570746f6f6c735c74657374735c5f5f696e69745f5f2e7079741000000074
*657374417661696c6162696c6974791a0100007306000000000106010301630100000002000000
*040000004300000073c00000007c00006900007d01007c0000690100640c007c01006903006a06
*00830100017c0000690100640d007c01006903006a0600830100017c0000690100640e007c0100
*6903006a0600830100017c0000690100640f007c01006903006a0600830100017c00006904007c
*010069050064090019640a00830200017c00006904007c01006905006407001964050083020001
*7c00006904007c010069050064030019640100830200017c0000690600640b007c01006905006a
*0600830100016400005328100000004e7309000000776974682d6477696d730c000000696e636c
*756465204457494d730c000000776974686f75742d6477696d73160000006578636c7564652044
*57494d202864656661756c74297308000000776974682d6261727315000000696e636c75646520
*626172202864656661756c7429730b000000776974686f75742d626172730b0000006578636c75
*646520626172730b000000776974686f75742d666f6f7308000000776974682d666f6f730b0000
*00776974686f75742d62617a28030000007309000000776974682d6477696d4e730c000000696e
*636c756465204457494d2803000000730c000000776974686f75742d6477696d4e731600000065
*78636c756465204457494d202864656661756c742928030000007308000000776974682d626172
*4e7315000000696e636c75646520626172202864656661756c74292803000000730b0000007769
*74686f75742d6261724e730b0000006578636c7564652062617228070000005266000000524e00
*00005223000000740f000000666561747572655f6f7074696f6e73522f000000740e0000006665
*61747572655f6e65676f7074525000000028020000005231000000526600000028000000002800
*00000073320000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c
*735c74657374735c5f5f696e69745f5f2e7079741200000074657374466561747572654f707469
*6f6e7320010000731a000000000109010601100206011002060110020601100217011701170163
*0100000002000000040000004300000073f60000007c00006900007d01007c00006901007c0100
*690200640100830200017c00006901007c0100690300640200830200017c00006901007c010069
*0400640100830200017c00006905006403007c01006906006a0600830100017c00006905006404
*007c01006907006a0600830100017c00006908006405007c01006907006a0600830100017c0000
*6908006406007c01006909006a0600830100017c0000690800640a007c0100690a006a06008301
*00017c00006901007c0100690b00670000830200017c00006901007c0100690c007c0000690d00
*670100830200017c0000690e00740f007c01006910006409008303000164000053280b0000004e
*69010000006900000000527d0000007307000000706b672e6261727307000000706b672e62617a
*730e000000736372697074732f62617a5f69745282000000730c000000666f6f2f666f6f666f6f
*2e63527c000000280200000073060000006c6962666f6f730c000000666f6f2f666f6f666f6f2e
*6328110000005266000000522f0000007408000000776974685f666f6f7408000000776974685f
*6261727408000000776974685f62617a52500000005261000000525d000000524e000000528000
*000052810000005262000000527a000000525700000052330000005204000000740f000000696e
*636c7564655f666561747572652802000000523100000052660000002800000000280000000073
*320000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c7465
*7374735c5f5f696e69745f5f2e7079740f00000074657374557365466561747572657333010000
*731800000000010901130113011301160116011601160116011301190463010000000100000009
*00000043000000732d0000007c0000690000740100740200640100680100740300640200640300
*64040083010164020036830201016400005328050000004e52770000005229000000527e000000
*522b00000028040000005233000000740a00000053797374656d45786974522600000052070000
*00280100000052310000002800000000280000000073320000006275696c645c62646973742e77
*696e33325c6567675c7365747570746f6f6c735c74657374735c5f5f696e69745f5f2e7079741c
*000000746573744665617475726557697468496e76616c696452656d6f76654401000073040000
*000001060128080000005214000000525b0000005267000000528a000000528c000000528f0000
*005294000000529600000028000000002800000000280000000073320000006275696c645c6264
*6973742e77696e33325c6567675c7365747570746f6f6c735c74657374735c5f5f696e69745f5f
*2e70795276000000f7000000730c00000006020915090c09060913091174100000005465737443
*6f6d6d616e6454657374736300000000000000000100000042000000733e0000006500005a0100
*6400008400005a02006401008400005a03006402008400005a04006403008400005a0500640400
*8400005a06006405008400005a0700525328060000006301000000020000000400000043000000
*73320000007400008300006901006401008301007d01007c00006902007403007c010074040069
*0500690600830200830100016400005328020000004e522800000028070000005226000000740f
*0000006765745f636f6d6d616e645f6f626a524e0000005268000000521d000000740300000063
*6d647407000000436f6d6d616e64280200000052310000007408000000746573745f636d642800
*000000280000000073320000006275696c645c62646973742e77696e33325c6567675c73657475
*70746f6f6c735c74657374735c5f5f696e69745f5f2e7079741100000074657374546573744973
*436f6d6d616e644b01000073040000000001120163010000000200000004000000430000007345
*0000007400006401006402006403006702008300017d01007c01006901006402008301007d0100
*7c0100690200830000017c00006903007c0100690400640400830200016400005328050000004e
*521b0000005228000000731c0000002d2d746573742d73756974653d666f6f2e74657374732e73
*75697465730f000000666f6f2e74657374732e7375697465280500000052260000005298000000
*7410000000656e737572655f66696e616c697a6564522f000000740a000000746573745f737569
*74652802000000523100000074030000007473312800000000280000000073320000006275696c
*645c62646973742e77696e33325c6567675c7365747570746f6f6c735c74657374735c5f5f696e
*69745f5f2e7079741a000000746573744c6f6e674f70745375697465574e6f44656661756c744f
*0100007308000000000115010f010a016301000000020000000300000043000000733900000074
*00006401006402008300016901006403008301007d01007c0100690200830000017c0000690300
*7c0100690400640200830200016400005328040000004e529e000000730f0000006261722e7465
*7374732e73756974655228000000280500000052260000005298000000529d000000522f000000
*529e00000028020000005231000000740300000074733228000000002800000000733200000062
*75696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c74657374735c5f
*5f696e69745f5f2e707974100000007465737444656661756c7453756974655501000073060000
*00000118010a016301000000020000000700000043000000735b00000074000064010064020064
*03006404006405006406006703008300026901006404008301007d01007c010069020083000001
*7c00006903007c0100690400640600830200017c00006903007c01006905006407008302000164
*00005328080000004e529e00000073090000006261722e7465737473521b000000522800000073
*020000002d6d7309000000666f6f2e74657374737314000000666f6f2e74657374732e74657374
*5f7375697465280600000052260000005298000000529d000000522f000000740b000000746573
*745f6d6f64756c65529e0000002802000000523100000074030000007473332800000000280000
*000073320000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c73
*5c74657374735c5f5f696e69745f5f2e7079741b0000007465737444656661756c74574d6f6475
*6c654f6e436d644c696e655a010000730e000000000106010601120109010a0113016301000000
*020000000700000043000000733e00000074000064010064020064030064040064050064060067
*05008300016901006402008301007d01007c00006902007403007c010069040083020001640000
*5328070000004e521b000000522800000073020000002d6d73090000006261722e746573747373
*020000002d73730f000000666f6f2e74657374732e737569746528050000005226000000529800
*000052330000005204000000529d00000028020000005231000000740300000074733428000000
*00280000000073320000006275696c645c62646973742e77696e33325c6567675c736574757074
*6f6f6c735c74657374735c5f5f696e69745f5f2e7079741600000074657374436f6e666c696374
*696e674f7074696f6e736301000073080000000001060118010901630100000002000000030000
*004300000073330000007400008300006901006401008301007d01007c0100690200830000017c
*00006903007c0100690400640000830200016400005328020000004e5228000000280600000052
*260000005298000000529d000000522f000000529e000000522300000028020000005231000000
*74030000007473352800000000280000000073320000006275696c645c62646973742e77696e33
*325c6567675c7365747570746f6f6c735c74657374735c5f5f696e69745f5f2e7079740b000000
*746573744e6f5375697465690100007306000000000112010a0128080000005214000000525b00
*0000529c00000052a000000052a200000052a500000052a700000052a900000028000000002800
*000000280000000073320000006275696c645c62646973742e77696e33325c6567675c73657475
*70746f6f6c735c74657374735c5f5f696e69745f5f2e7079529700000049010000730c00000006
*020904090609050909090628020000004e4e2823000000523d0000005211000000520000000052
*0100000052020000005203000000740e000000646973747574696c732e636f7265521d00000074
*0d000000646973747574696c732e636d647410000000646973747574696c732e6572726f727352
*04000000520500000052060000005221000000740f0000007365747570746f6f6c732e64697374
*520700000052080000005223000000522e000000523e00000074120000007365747570746f6f6c
*732e646570656e64737411000000646973747574696c732e76657273696f6e520a000000520b00
*0000740e000000646973747574696c732e7574696c520c000000521500000074070000006f732e
*706174685254000000521900000052260000005227000000525c00000052760000005297000000
*28000000002800000000280000000073320000006275696c645c62646973742e77696e33325c65
*67675c7365747570746f6f6c735c74657374735c5f5f696e69745f5f2e707974080000003c6d6f
*64756c653e010000007324000000060122011801160110011801100110010c010a011601100118
*02090b09101652167b1652
addfile ./setuptools-0.6c14devdev.egg/setuptools/tests/test_packageindex.py
hunk ./setuptools-0.6c14devdev.egg/setuptools/tests/test_packageindex.py 1
+"""Package Index Tests
+"""
+# More would be better!
+
+import os, shutil, tempfile, unittest, urllib2
+import pkg_resources
+import setuptools.package_index
+
+class TestPackageIndex(unittest.TestCase):
+
+    def test_bad_urls(self):
+        index = setuptools.package_index.PackageIndex()
+        url = 'http://127.0.0.1/nonesuch/test_package_index'
+        try:
+            v = index.open_url(url)
+        except Exception, v:
+            self.assert_(url in str(v))
+        else:
+            self.assert_(isinstance(v,urllib2.HTTPError))
addfile ./setuptools-0.6c14devdev.egg/setuptools/tests/test_packageindex.pyc
binary ./setuptools-0.6c14devdev.egg/setuptools/tests/test_packageindex.pyc
oldhex
*
newhex
*d1f20d0a511ef84b6300000000000000000a0000004000000073770000006400005a0000640100
*6402006b01005a01006401006402006b02005a02006401006402006b03005a0300640100640200
*6b04005a04006401006402006b05005a05006401006402006b06005a06006401006402006b0700
*5a0800640300650400690900660100640400840000830000595a0a006402005328050000007314
*0000005061636b61676520496e6465782054657374730a69ffffffff4e74100000005465737450
*61636b616765496e646578630000000000000000010000004200000073110000006500005a0100
*6400008400005a0200525328010000006301000000040000000700000043000000737600000074
*00006901006902008300007d01006401007d02007913007c01006903007c02008301007d030057
*6e2e00047404006a0a006f220001017d0300017c00006905007c02007406007c03008301006a06
*00830100016e1b0001587c00006905007407007c03007408006909008302008301000164000053
*28020000004e732c000000687474703a2f2f3132372e302e302e312f6e6f6e65737563682f7465
*73745f7061636b6167655f696e646578280a000000740a0000007365747570746f6f6c73740d00
*00007061636b6167655f696e646578740c0000005061636b616765496e64657874080000006f70
*656e5f75726c7409000000457863657074696f6e74070000006173736572745f74030000007374
*72740a0000006973696e7374616e6365740700000075726c6c6962327409000000485454504572
*726f722804000000740400000073656c667405000000696e646578740300000075726c74010000
*007628000000002800000000733b0000006275696c645c62646973742e77696e33325c6567675c
*7365747570746f6f6c735c74657374735c746573745f7061636b616765696e6465782e7079740d
*000000746573745f6261645f75726c730b000000730e00000000010f0106010301130110011e02
*280300000074080000005f5f6e616d655f5f740a0000005f5f6d6f64756c655f5f520f00000028
*0000000028000000002800000000733b0000006275696c645c62646973742e77696e33325c6567
*675c7365747570746f6f6c735c74657374735c746573745f7061636b616765696e6465782e7079
*52000000000900000073020000000602280b00000074070000005f5f646f635f5f74020000006f
*73740600000073687574696c740800000074656d7066696c657408000000756e69747465737452
*09000000740d000000706b675f7265736f757263657374180000007365747570746f6f6c732e70
*61636b6167655f696e646578520100000074080000005465737443617365520000000028000000
*0028000000002800000000733b0000006275696c645c62646973742e77696e33325c6567675c73
*65747570746f6f6c735c74657374735c746573745f7061636b616765696e6465782e7079740800
*00003c6d6f64756c653e02000000730800000006033c010c010c02
addfile ./setuptools-0.6c14devdev.egg/setuptools/tests/test_resources.py
hunk ./setuptools-0.6c14devdev.egg/setuptools/tests/test_resources.py 1
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+# NOTE: the shebang and encoding lines are for ScriptHeaderTests; do not remove
+from unittest import TestCase, makeSuite; from pkg_resources import *
+from setuptools.command.easy_install import get_script_header, is_sh
+import os, pkg_resources, sys, StringIO
+try: frozenset
+except NameError:
+    from sets import ImmutableSet as frozenset
+
+class Metadata(EmptyProvider):
+    """Mock object to return metadata as if from an on-disk distribution"""
+
+    def __init__(self,*pairs):
+        self.metadata = dict(pairs)
+
+    def has_metadata(self,name):
+        return name in self.metadata
+
+    def get_metadata(self,name):
+        return self.metadata[name]
+
+    def get_metadata_lines(self,name):
+        return yield_lines(self.get_metadata(name))
+
+class DistroTests(TestCase):
+
+    def testCollection(self):
+        # empty path should produce no distributions
+        ad = Environment([], platform=None, python=None)
+        self.assertEqual(list(ad), [])
+        self.assertEqual(ad['FooPkg'],[])
+        ad.add(Distribution.from_filename("FooPkg-1.3_1.egg"))
+        ad.add(Distribution.from_filename("FooPkg-1.4-py2.4-win32.egg"))
+        ad.add(Distribution.from_filename("FooPkg-1.2-py2.4.egg"))
+
+        # Name is in there now
+        self.failUnless(ad['FooPkg'])
+        # But only 1 package
+        self.assertEqual(list(ad), ['foopkg'])
+
+        # Distributions sort by version
+        self.assertEqual(
+            [dist.version for dist in ad['FooPkg']], ['1.4','1.3-1','1.2']
+        )
+        # Removing a distribution leaves sequence alone
+        ad.remove(ad['FooPkg'][1])
+        self.assertEqual(
+            [dist.version for dist in ad['FooPkg']], ['1.4','1.2']
+        )
+        # And inserting adds them in order
+        ad.add(Distribution.from_filename("FooPkg-1.9.egg"))
+        self.assertEqual(
+            [dist.version for dist in ad['FooPkg']], ['1.9','1.4','1.2']
+        )
+
+        ws = WorkingSet([])
+        foo12 = Distribution.from_filename("FooPkg-1.2-py2.4.egg")
+        foo14 = Distribution.from_filename("FooPkg-1.4-py2.4-win32.egg")
+        req, = parse_requirements("FooPkg>=1.3")
+
+        # Nominal case: no distros on path, should yield all applicable
+        self.assertEqual(ad.best_match(req,ws).version, '1.9')
+        # If a matching distro is already installed, should return only that
+        ws.add(foo14); self.assertEqual(ad.best_match(req,ws).version, '1.4')
+
+        # If the first matching distro is unsuitable, it's a version conflict
+        ws = WorkingSet([]); ws.add(foo12); ws.add(foo14)
+        self.assertRaises(VersionConflict, ad.best_match, req, ws)
+
+        # If more than one match on the path, the first one takes precedence
+        ws = WorkingSet([]); ws.add(foo14); ws.add(foo12); ws.add(foo14);
+        self.assertEqual(ad.best_match(req,ws).version, '1.4')
+
+    def checkFooPkg(self,d):
+        self.assertEqual(d.project_name, "FooPkg")
+        self.assertEqual(d.key, "foopkg")
+        self.assertEqual(d.version, "1.3-1")
+        self.assertEqual(d.py_version, "2.4")
+        self.assertEqual(d.platform, "win32")
+        self.assertEqual(d.parsed_version, parse_version("1.3-1"))
+
+    def testDistroBasics(self):
+        d = Distribution(
+            "/some/path",
+            project_name="FooPkg",version="1.3-1",py_version="2.4",platform="win32"
+        )
+        self.checkFooPkg(d)
+
+        d = Distribution("/some/path")
+        self.assertEqual(d.py_version, sys.version[:3])
+        self.assertEqual(d.platform, None)
+
+    def testDistroParse(self):
+        d = Distribution.from_filename("FooPkg-1.3_1-py2.4-win32.egg")
+        self.checkFooPkg(d)
+        d = Distribution.from_filename("FooPkg-1.3_1-py2.4-win32.egg-info")
+        self.checkFooPkg(d)
+
+    def testDistroMetadata(self):
+        d = Distribution(
+            "/some/path", project_name="FooPkg", py_version="2.4", platform="win32",
+            metadata = Metadata(
+                ('PKG-INFO',"Metadata-Version: 1.0\nVersion: 1.3-1\n")
+            )
+        )
+        self.checkFooPkg(d)
+
+
+    def distRequires(self, txt):
+        return Distribution("/foo", metadata=Metadata(('depends.txt', txt)))
+
+    def checkRequires(self, dist, txt, extras=()):
+        self.assertEqual(
+            list(dist.requires(extras)),
+            list(parse_requirements(txt))
+        )
+
+    def testDistroDependsSimple(self):
+        for v in "Twisted>=1.5", "Twisted>=1.5\nZConfig>=2.0":
+            self.checkRequires(self.distRequires(v), v)
+
+
+    def testResolve(self):
+        ad = Environment([]); ws = WorkingSet([])
+        # Resolving no requirements -> nothing to install
+        self.assertEqual( list(ws.resolve([],ad)), [] )
+        # Request something not in the collection -> DistributionNotFound
+        self.assertRaises(
+            DistributionNotFound, ws.resolve, parse_requirements("Foo"), ad
+        )
+        Foo = Distribution.from_filename(
+            "/foo_dir/Foo-1.2.egg",
+            metadata=Metadata(('depends.txt', "[bar]\nBaz>=2.0"))
+        )
+        ad.add(Foo); ad.add(Distribution.from_filename("Foo-0.9.egg"))
+
+        # Request thing(s) that are available -> list to activate
+        for i in range(3):
+            targets = list(ws.resolve(parse_requirements("Foo"), ad))
+            self.assertEqual(targets, [Foo])
+            map(ws.add,targets)
+        self.assertRaises(VersionConflict, ws.resolve,
+            parse_requirements("Foo==0.9"), ad)
+        ws = WorkingSet([]) # reset
+
+        # Request an extra that causes an unresolved dependency for "Baz"
+        self.assertRaises(
+            DistributionNotFound, ws.resolve,parse_requirements("Foo[bar]"), ad
+        )
+        Baz = Distribution.from_filename(
+            "/foo_dir/Baz-2.1.egg", metadata=Metadata(('depends.txt', "Foo"))
+        )
+        ad.add(Baz)
+
+        # Activation list now includes resolved dependency
+        self.assertEqual(
+            list(ws.resolve(parse_requirements("Foo[bar]"), ad)), [Foo,Baz]
+        )
+        # Requests for conflicting versions produce VersionConflict
+        self.assertRaises( VersionConflict,
+            ws.resolve, parse_requirements("Foo==1.2\nFoo!=1.2"), ad
+        )
+
+    def testDistroDependsOptions(self):
+        d = self.distRequires("""
+            Twisted>=1.5
+            [docgen]
+            ZConfig>=2.0
+            docutils>=0.3
+            [fastcgi]
+            fcgiapp>=0.1""")
+        self.checkRequires(d,"Twisted>=1.5")
+        self.checkRequires(
+            d,"Twisted>=1.5 ZConfig>=2.0 docutils>=0.3".split(), ["docgen"]
+        )
+        self.checkRequires(
+            d,"Twisted>=1.5 fcgiapp>=0.1".split(), ["fastcgi"]
+        )
+        self.checkRequires(
+            d,"Twisted>=1.5 ZConfig>=2.0 docutils>=0.3 fcgiapp>=0.1".split(),
+            ["docgen","fastcgi"]
+        )
+        self.checkRequires(
+            d,"Twisted>=1.5 fcgiapp>=0.1 ZConfig>=2.0 docutils>=0.3".split(),
+            ["fastcgi", "docgen"]
+        )
+        self.assertRaises(UnknownExtra, d.requires, ["foo"])
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+class EntryPointTests(TestCase):
+
+    def assertfields(self, ep):
+        self.assertEqual(ep.name,"foo")
+        self.assertEqual(ep.module_name,"setuptools.tests.test_resources")
+        self.assertEqual(ep.attrs, ("EntryPointTests",))
+        self.assertEqual(ep.extras, ("x",))
+        self.failUnless(ep.load() is EntryPointTests)
+        self.assertEqual(
+            str(ep),
+            "foo = setuptools.tests.test_resources:EntryPointTests [x]"
+        )
+
+    def setUp(self):
+        self.dist = Distribution.from_filename(
+            "FooPkg-1.2-py2.4.egg", metadata=Metadata(('requires.txt','[x]')))
+
+    def testBasics(self):
+        ep = EntryPoint(
+            "foo", "setuptools.tests.test_resources", ["EntryPointTests"],
+            ["x"], self.dist
+        )
+        self.assertfields(ep)
+
+    def testParse(self):
+        s = "foo = setuptools.tests.test_resources:EntryPointTests [x]"
+        ep = EntryPoint.parse(s, self.dist)
+        self.assertfields(ep)
+
+        ep = EntryPoint.parse("bar baz=  spammity[PING]")
+        self.assertEqual(ep.name,"bar baz")
+        self.assertEqual(ep.module_name,"spammity")
+        self.assertEqual(ep.attrs, ())
+        self.assertEqual(ep.extras, ("ping",))
+
+        ep = EntryPoint.parse(" fizzly =  wocka:foo")
+        self.assertEqual(ep.name,"fizzly")
+        self.assertEqual(ep.module_name,"wocka")
+        self.assertEqual(ep.attrs, ("foo",))
+        self.assertEqual(ep.extras, ())
+
+    def testRejects(self):
+        for ep in [
+            "foo", "x=1=2", "x=a:b:c", "q=x/na", "fez=pish:tush-z", "x=f[a]>2",
+        ]:
+            try: EntryPoint.parse(ep)
+            except ValueError: pass
+            else: raise AssertionError("Should've been bad", ep)
+
+    def checkSubMap(self, m):
+        self.assertEqual(len(m), len(self.submap_expect))
+        for key, ep in self.submap_expect.iteritems():
+            self.assertEqual(repr(m.get(key)), repr(ep))
+
+    submap_expect = dict(
+        feature1=EntryPoint('feature1', 'somemodule', ['somefunction']),
+        feature2=EntryPoint('feature2', 'another.module', ['SomeClass'], ['extra1','extra2']),
+        feature3=EntryPoint('feature3', 'this.module', extras=['something'])
+    )
+    submap_str = """
+            # define features for blah blah
+            feature1 = somemodule:somefunction
+            feature2 = another.module:SomeClass [extra1,extra2]
+            feature3 = this.module [something]
+    """
+
+    def testParseList(self):
+        self.checkSubMap(EntryPoint.parse_group("xyz", self.submap_str))
+        self.assertRaises(ValueError, EntryPoint.parse_group, "x a", "foo=bar")
+        self.assertRaises(ValueError, EntryPoint.parse_group, "x",
+            ["foo=baz", "foo=bar"])
+
+    def testParseMap(self):
+        m = EntryPoint.parse_map({'xyz':self.submap_str})
+        self.checkSubMap(m['xyz'])
+        self.assertEqual(m.keys(),['xyz'])
+        m = EntryPoint.parse_map("[xyz]\n"+self.submap_str)
+        self.checkSubMap(m['xyz'])
+        self.assertEqual(m.keys(),['xyz'])
+        self.assertRaises(ValueError, EntryPoint.parse_map, ["[xyz]", "[xyz]"])
+        self.assertRaises(ValueError, EntryPoint.parse_map, self.submap_str)
+
+class RequirementsTests(TestCase):
+
+    def testBasics(self):
+        r = Requirement.parse("Twisted>=1.2")
+        self.assertEqual(str(r),"Twisted>=1.2")
+        self.assertEqual(repr(r),"Requirement.parse('Twisted>=1.2')")
+        self.assertEqual(r, Requirement("Twisted", [('>=','1.2')], ()))
+        self.assertEqual(r, Requirement("twisTed", [('>=','1.2')], ()))
+        self.assertNotEqual(r, Requirement("Twisted", [('>=','2.0')], ()))
+        self.assertNotEqual(r, Requirement("Zope", [('>=','1.2')], ()))
+        self.assertNotEqual(r, Requirement("Zope", [('>=','3.0')], ()))
+        self.assertNotEqual(r, Requirement.parse("Twisted[extras]>=1.2"))
+
+    def testOrdering(self):
+        r1 = Requirement("Twisted", [('==','1.2c1'),('>=','1.2')], ())
+        r2 = Requirement("Twisted", [('>=','1.2'),('==','1.2c1')], ())
+        self.assertEqual(r1,r2)
+        self.assertEqual(str(r1),str(r2))
+        self.assertEqual(str(r2),"Twisted==1.2c1,>=1.2")
+
+    def testBasicContains(self):
+        r = Requirement("Twisted", [('>=','1.2')], ())
+        foo_dist = Distribution.from_filename("FooPkg-1.3_1.egg")
+        twist11  = Distribution.from_filename("Twisted-1.1.egg")
+        twist12  = Distribution.from_filename("Twisted-1.2.egg")
+        self.failUnless(parse_version('1.2') in r)
+        self.failUnless(parse_version('1.1') not in r)
+        self.failUnless('1.2' in r)
+        self.failUnless('1.1' not in r)
+        self.failUnless(foo_dist not in r)
+        self.failUnless(twist11 not in r)
+        self.failUnless(twist12 in r)
+
+    def testAdvancedContains(self):
+        r, = parse_requirements("Foo>=1.2,<=1.3,==1.9,>2.0,!=2.5,<3.0,==4.5")
+        for v in ('1.2','1.2.2','1.3','1.9','2.0.1','2.3','2.6','3.0c1','4.5'):
+            self.failUnless(v in r, (v,r))
+        for v in ('1.2c1','1.3.1','1.5','1.9.1','2.0','2.5','3.0','4.0'):
+            self.failUnless(v not in r, (v,r))
+
+
+    def testOptionsAndHashing(self):
+        r1 = Requirement.parse("Twisted[foo,bar]>=1.2")
+        r2 = Requirement.parse("Twisted[bar,FOO]>=1.2")
+        r3 = Requirement.parse("Twisted[BAR,FOO]>=1.2.0")
+        self.assertEqual(r1,r2)
+        self.assertEqual(r1,r3)
+        self.assertEqual(r1.extras, ("foo","bar"))
+        self.assertEqual(r2.extras, ("bar","foo"))  # extras are normalized
+        self.assertEqual(hash(r1), hash(r2))
+        self.assertEqual(
+            hash(r1), hash(("twisted", ((">=",parse_version("1.2")),),
+                            frozenset(["foo","bar"])))
+        )
+
+    def testVersionEquality(self):
+        r1 = Requirement.parse("setuptools==0.3a2")
+        r2 = Requirement.parse("setuptools!=0.3a4")
+        d = Distribution.from_filename
+
+        self.failIf(d("setuptools-0.3a4.egg") in r1)
+        self.failIf(d("setuptools-0.3a1.egg") in r1)
+        self.failIf(d("setuptools-0.3a4.egg") in r2)
+
+        self.failUnless(d("setuptools-0.3a2.egg") in r1)
+        self.failUnless(d("setuptools-0.3a2.egg") in r2)
+        self.failUnless(d("setuptools-0.3a3.egg") in r2)
+        self.failUnless(d("setuptools-0.3a5.egg") in r2)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+class ParseTests(TestCase):
+
+    def testEmptyParse(self):
+        self.assertEqual(list(parse_requirements('')), [])
+
+    def testYielding(self):
+        for inp,out in [
+            ([], []), ('x',['x']), ([[]],[]), (' x\n y', ['x','y']),
+            (['x\n\n','y'], ['x','y']),
+        ]:
+            self.assertEqual(list(pkg_resources.yield_lines(inp)),out)
+
+    def testSplitting(self):
+        self.assertEqual(
+            list(
+                pkg_resources.split_sections("""
+                    x
+                    [Y]
+                    z
+
+                    a
+                    [b ]
+                    # foo
+                    c
+                    [ d]
+                    [q]
+                    v
+                    """
+                )
+            ),
+            [(None,["x"]), ("Y",["z","a"]), ("b",["c"]), ("d",[]), ("q",["v"])]
+        )
+        self.assertRaises(ValueError,list,pkg_resources.split_sections("[foo"))
+
+    def testSafeName(self):
+        self.assertEqual(safe_name("adns-python"), "adns-python")
+        self.assertEqual(safe_name("WSGI Utils"),  "WSGI-Utils")
+        self.assertEqual(safe_name("WSGI  Utils"), "WSGI-Utils")
+        self.assertEqual(safe_name("Money$$$Maker"), "Money-Maker")
+        self.assertNotEqual(safe_name("peak.web"), "peak-web")
+
+    def testSafeVersion(self):
+        self.assertEqual(safe_version("1.2-1"), "1.2-1")
+        self.assertEqual(safe_version("1.2 alpha"),  "1.2.alpha")
+        self.assertEqual(safe_version("2.3.4 20050521"), "2.3.4.20050521")
+        self.assertEqual(safe_version("Money$$$Maker"), "Money-Maker")
+        self.assertEqual(safe_version("peak.web"), "peak.web")
+
+    def testSimpleRequirements(self):
+        self.assertEqual(
+            list(parse_requirements('Twis-Ted>=1.2-1')),
+            [Requirement('Twis-Ted',[('>=','1.2-1')], ())]
+        )
+        self.assertEqual(
+            list(parse_requirements('Twisted >=1.2, \ # more\n<2.0')),
+            [Requirement('Twisted',[('>=','1.2'),('<','2.0')], ())]
+        )
+        self.assertEqual(
+            Requirement.parse("FooBar==1.99a3"),
+            Requirement("FooBar", [('==','1.99a3')], ())
+        )
+        self.assertRaises(ValueError,Requirement.parse,">=2.3")
+        self.assertRaises(ValueError,Requirement.parse,"x\\")
+        self.assertRaises(ValueError,Requirement.parse,"x==2 q")
+        self.assertRaises(ValueError,Requirement.parse,"X==1\nY==2")
+        self.assertRaises(ValueError,Requirement.parse,"#")
+
+    def testVersionEquality(self):
+        def c(s1,s2):
+            p1, p2 = parse_version(s1),parse_version(s2)
+            self.assertEqual(p1,p2, (s1,s2,p1,p2))
+
+        c('1.2-rc1', '1.2rc1')
+        c('0.4', '0.4.0')
+        c('0.4.0.0', '0.4.0')
+        c('0.4.0-0', '0.4-0')
+        c('0pl1', '0.0pl1')
+        c('0pre1', '0.0c1')
+        c('0.0.0preview1', '0c1')
+        c('0.0c1', '0-rc1')
+        c('1.2a1', '1.2.a.1'); c('1.2...a', '1.2a')
+
+    def testVersionOrdering(self):
+        def c(s1,s2):
+            p1, p2 = parse_version(s1),parse_version(s2)
+            self.failUnless(p1<p2, (s1,s2,p1,p2))
+
+        c('2.1','2.1.1')
+        c('2a1','2b0')
+        c('2a1','2.1')
+        c('2.3a1', '2.3')
+        c('2.1-1', '2.1-2')
+        c('2.1-1', '2.1.1')
+        c('2.1', '2.1pl4')
+        c('2.1a0-20040501', '2.1')
+        c('1.1', '02.1')
+        c('A56','B27')
+        c('3.2', '3.2.pl0')
+        c('3.2-1', '3.2pl1')
+        c('3.2pl1', '3.2pl1-1')
+        c('0.4', '4.0')
+        c('0.0.4', '0.4.0')
+        c('0pl1', '0.4pl1')
+        c('2.1.0-rc1','2.1.0')
+        c('2.1dev','2.1a0')
+
+        torture ="""
+        0.80.1-3 0.80.1-2 0.80.1-1 0.79.9999+0.80.0pre4-1
+        0.79.9999+0.80.0pre2-3 0.79.9999+0.80.0pre2-2
+        0.77.2-1 0.77.1-1 0.77.0-1
+        """.split()
+
+        for p,v1 in enumerate(torture):
+            for v2 in torture[p+1:]:
+                c(v2,v1)
+
+
+
+
+
+
+
+
+class ScriptHeaderTests(TestCase):
+    non_ascii_exe = '/Users/José/bin/python'
+
+    def test_get_script_header(self):
+        if not sys.platform.startswith('java') or not is_sh(sys.executable):
+            # This test is for non-Jython platforms
+            self.assertEqual(get_script_header('#!/usr/local/bin/python'),
+                             '#!%s\n' % os.path.normpath(sys.executable))
+            self.assertEqual(get_script_header('#!/usr/bin/python -x'),
+                             '#!%s  -x\n' % os.path.normpath(sys.executable))
+            self.assertEqual(get_script_header('#!/usr/bin/python',
+                                               executable=self.non_ascii_exe),
+                             '#!%s -x\n' % self.non_ascii_exe)
+
+    def test_get_script_header_jython_workaround(self):
+        platform = sys.platform
+        sys.platform = 'java1.5.0_13'
+        stdout = sys.stdout
+        try:
+            # A mock sys.executable that uses a shebang line (this file)
+            exe = os.path.normpath(os.path.splitext(__file__)[0] + '.py')
+            self.assertEqual(
+                get_script_header('#!/usr/local/bin/python', executable=exe),
+                '#!/usr/bin/env %s\n' % exe)
+
+            # Ensure we generate what is basically a broken shebang line
+            # when there's options, with a warning emitted
+            sys.stdout = StringIO.StringIO()
+            self.assertEqual(get_script_header('#!/usr/bin/python -x',
+                                               executable=exe),
+                             '#!%s  -x\n' % exe)
+            self.assert_('Unable to adapt shebang line' in sys.stdout.getvalue())
+            sys.stdout = StringIO.StringIO()
+            self.assertEqual(get_script_header('#!/usr/bin/python',
+                                               executable=self.non_ascii_exe),
+                             '#!%s -x\n' % self.non_ascii_exe)
+            self.assert_('Unable to adapt shebang line' in sys.stdout.getvalue())
+        finally:
+            sys.platform = platform
+            sys.stdout = stdout
+
addfile ./setuptools-0.6c14devdev.egg/setuptools/tests/test_resources.pyc
binary ./setuptools-0.6c14devdev.egg/setuptools/tests/test_resources.pyc
oldhex
*
newhex
*d1f20d0a511ef84b6300000000000000000d00000040000000731c0100006400006401006b0000
*6c01005a01006c02005a0200016400006402006b0300546400006403006b04006c05005a05006c
*06005a0600016400006404006b07005a07006400006404006b03005a03006400006404006b0800
*5a08006400006404006b09005a0900790800650a0001576e230004650b006a0a006f1700010101
*016400006405006b0c006c0d005a0a00016e02000158640600650e006601006407008400008300
*00595a0f00640800650100660100640900840000830000595a1000640a00650100660100640b00
*840000830000595a1100640c00650100660100640d00840000830000595a1200640e0065010066
*0100640f00840000830000595a1300641000650100660100641100840000830000595a14006404
*0053281200000069ffffffff28020000007408000000546573744361736574090000006d616b65
*5375697465280100000074010000002a280200000074110000006765745f7363726970745f6865
*61646572740500000069735f73684e2801000000740c000000496d6d757461626c655365747408
*0000004d65746164617461630000000000000000010000004200000073320000006500005a0100
*6400005a02006401008400005a03006402008400005a04006403008400005a0500640400840000
*5a06005253280500000073410000004d6f636b206f626a65637420746f2072657475726e206d65
*7461646174612061732069662066726f6d20616e206f6e2d6469736b2064697374726962757469
*6f6e630100000002000000020000004700000073130000007400007c01008301007c00005f0100
*6400005328010000004e280200000074040000006469637474080000006d657461646174612802
*000000740400000073656c66740500000070616972732800000000280000000073380000006275
*696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c74657374735c7465
*73745f7265736f75726365732e707974080000005f5f696e69745f5f0e00000073020000000001
*6302000000020000000200000043000000730d0000007c01007c00006900006a06005328010000
*004e280100000052080000002802000000520900000074040000006e616d652800000000280000
*000073380000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c73
*5c74657374735c746573745f7265736f75726365732e7079740c0000006861735f6d6574616461
*746111000000730200000000016302000000020000000200000043000000730b0000007c000069
*00007c0100195328010000004e2801000000520800000028020000005209000000520c00000028
*00000000280000000073380000006275696c645c62646973742e77696e33325c6567675c736574
*7570746f6f6c735c74657374735c746573745f7265736f75726365732e7079740c000000676574
*5f6d65746164617461140000007302000000000163020000000200000003000000430000007313
*0000007400007c00006901007c01008301008301005328010000004e2802000000740b00000079
*69656c645f6c696e6573520e00000028020000005209000000520c000000280000000028000000
*0073380000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c
*74657374735c746573745f7265736f75726365732e707974120000006765745f6d657461646174
*615f6c696e65731700000073020000000001280700000074080000005f5f6e616d655f5f740a00
*00005f5f6d6f64756c655f5f74070000005f5f646f635f5f520b000000520d000000520e000000
*521000000028000000002800000000280000000073380000006275696c645c62646973742e7769
*6e33325c6567675c7365747570746f6f6c735c74657374735c746573745f7265736f7572636573
*2e707952060000000b000000730a00000006010602090309030903740b00000044697374726f54
*65737473630000000000000000020000004200000073650000006500005a01006400008400005a
*02006401008400005a03006402008400005a04006403008400005a05006404008400005a060064
*05008400005a0700640a006406008401005a08006407008400005a09006408008400005a0a0064
*09008400005a0b005253280b00000063010000000a0000000b0000004300000073a00200007400
*006700006401006400006402006400008301027d01007c00006902007403007c01008301006700
*00830200017c00006902007c010064030019670000830200017c01006904007405006906006404
*00830100830100017c0100690400740500690600640500830100830100017c0100690400740500
*690600640600830100830100017c00006907007c010064030019830100017c0000690200740300
*7c0100830100640700670100830200017c0000690200670000047d02007c010064030019445d10
*007d03007c02007c03006908001271c3007e0200640800640900640a00670300830200017c0100
*6909007c010064030019640b0019830100017c0000690200670000047d04007c01006403001944
*5d10007d03007c04007c0300690800127113017e0400640800640a00670200830200017c010069
*0400740500690600640c00830100830100017c0000690200670000047d05007c01006403001944
*5d10007d03007c05007c0300690800127161017e0500640d00640800640a006703008302000174
*0a006700008301007d06007405006906006406008301007d07007405006906006405008301007d
*0800740b00640e008301005c01007d09007c00006902007c0100690c007c09007c060083020069
*0800640d00830200017c06006904007c0800830100017c00006902007c0100690c007c09007c06
*0083020069080064080083020001740a006700008301007d06007c06006904007c070083010001
*7c06006904007c0800830100017c0000690d00740e007c0100690c007c09007c06008304000174
*0a006700008301007d06007c06006904007c0800830100017c06006904007c0700830100017c06
*006904007c0800830100017c00006902007c0100690c007c09007c060083020069080064080083
*02000164000053280f0000004e7408000000706c6174666f726d7406000000707974686f6e7406
*000000466f6f506b677310000000466f6f506b672d312e335f312e656767731a000000466f6f50
*6b672d312e342d7079322e342d77696e33322e6567677314000000466f6f506b672d312e322d70
*79322e342e6567677406000000666f6f706b677303000000312e347305000000312e332d317303
*000000312e326901000000730e000000466f6f506b672d312e392e6567677303000000312e3973
*0b000000466f6f506b673e3d312e33280f000000740b000000456e7669726f6e6d656e74740400
*00004e6f6e65740b000000617373657274457175616c74040000006c6973747403000000616464
*740c000000446973747269627574696f6e740d00000066726f6d5f66696c656e616d65740a0000
*006661696c556e6c657373740700000076657273696f6e740600000072656d6f7665740a000000
*576f726b696e67536574741200000070617273655f726571756972656d656e7473740a00000062
*6573745f6d61746368740c000000617373657274526169736573740f00000056657273696f6e43
*6f6e666c696374280a00000052090000007402000000616474040000005f5b315d740400000064
*69737474040000005f5b325d74040000005f5b335d740200000077737405000000666f6f313274
*05000000666f6f313474030000007265712800000000280000000073380000006275696c645c62
*646973742e77696e33325c6567675c7365747570746f6f6c735c74657374735c746573745f7265
*736f75726365732e7079740e00000074657374436f6c6c656374696f6e1c000000734000000000
*0218011601140116011601160311021903060135031501060132031601060135030c010f010f01
*0f031f020d001f030c000d000d0119030c000d000d000d01630200000002000000040000004300
*0000737c0000007c00006900007c0100690100640100830200017c00006900007c010069020064
*0200830200017c00006900007c0100690300640300830200017c00006900007c01006904006404
*00830200017c00006900007c0100690500640500830200017c00006900007c0100690600740700
*640300830100830200016400005328060000004e521700000052180000007305000000312e332d
*317303000000322e34740500000077696e33322808000000521b000000740c00000070726f6a65
*63745f6e616d6574030000006b65795221000000740a00000070795f76657273696f6e52150000
*00740e0000007061727365645f76657273696f6e740d00000070617273655f76657273696f6e28
*0200000052090000007401000000642800000000280000000073380000006275696c645c626469
*73742e77696e33325c6567675c7365747570746f6f6c735c74657374735c746573745f7265736f
*75726365732e7079740b000000636865636b466f6f506b674b000000730c000000000113011301
*1301130113016301000000020000000a00000043000000736e0000007400006401006402006403
*006404006405006406006407006408006409008301047d01007c00006901007c01008301000174
*00006401008301007d01007c00006902007c0100690300740400690500640a0020830200017c00
*006902007c01006906006400008302000164000053280b0000004e730a0000002f736f6d652f70
*6174685233000000521700000052210000007305000000312e332d315235000000730300000032
*2e345215000000523200000069030000002808000000521e0000005239000000521b0000005235
*000000740300000073797352210000005215000000521a00000028020000005209000000523800
*00002800000000280000000073380000006275696c645c62646973742e77696e33325c6567675c
*7365747570746f6f6c735c74657374735c746573745f7265736f75726365732e70797410000000
*7465737444697374726f42617369637353000000730e0000000001030106011b020d020c011a01
*6301000000020000000200000043000000733c0000007400006901006401008301007d01007c00
*006902007c0100830100017400006901006402008301007d01007c00006902007c010083010001
*6400005328030000004e731c000000466f6f506b672d312e335f312d7079322e342d77696e3332
*2e6567677321000000466f6f506b672d312e335f312d7079322e342d77696e33322e6567672d69
*6e666f2803000000521e000000521f000000523900000028020000005209000000523800000028
*00000000280000000073380000006275696c645c62646973742e77696e33325c6567675c736574
*7570746f6f6c735c74657374735c746573745f7265736f75726365732e7079740f000000746573
*7444697374726f50617273655e000000730800000000010f010d010f016301000000020000000c
*00000043000000733b000000740000640100640200640300640400640500640600640700640800
*740100640b008301008301047d01007c00006902007c01008301000164000053280c0000004e73
*0a0000002f736f6d652f706174685233000000521700000052350000007303000000322e345215
*000000523200000052080000007308000000504b472d494e464f73250000004d65746164617461
*2d56657273696f6e3a20312e300a56657273696f6e3a20312e332d310a28020000007308000000
*504b472d494e464f73250000004d657461646174612d56657273696f6e3a20312e300a56657273
*696f6e3a20312e332d310a2803000000521e000000520600000052390000002802000000520900
*000052380000002800000000280000000073380000006275696c645c62646973742e77696e3332
*5c6567675c7365747570746f6f6c735c74657374735c746573745f7265736f75726365732e7079
*74120000007465737444697374726f4d6574616461746164000000730a00000000010301180103
*010c036302000000020000000600000043000000731c0000007400006401006402007401006403
*007c01006602008301008301015328040000004e73040000002f666f6f5208000000730b000000
*646570656e64732e7478742802000000521e000000520600000028020000005209000000740300
*00007478742800000000280000000073380000006275696c645c62646973742e77696e33325c65
*67675c7365747570746f6f6c735c74657374735c746573745f7265736f75726365732e7079740c
*0000006469737452657175697265736e0000007302000000000163040000000400000005000000
*43000000732f0000007c00006900007401007c01006902007c0300830100830100740100740300
*7c0200830100830100830200016400005328010000004e2804000000521b000000521c00000074
*080000007265717569726573522400000028040000005209000000522a000000523e0000007406
*0000006578747261732800000000280000000073380000006275696c645c62646973742e77696e
*33325c6567675c7365747570746f6f6c735c74657374735c746573745f7265736f75726365732e
*7079740d000000636865636b526571756972657371000000730600000000010601120163010000
*00020000000400000043000000732e000000782700640300445d1f007d01007c00006900007c00
*006901007c01008301007c010083020001710700576400005328040000004e730c000000547769
*737465643e3d312e357319000000547769737465643e3d312e350a5a436f6e6669673e3d322e30
*2802000000730c000000547769737465643e3d312e357319000000547769737465643e3d312e35
*0a5a436f6e6669673e3d322e3028020000005242000000523f0000002802000000520900000074
*01000000762800000000280000000073380000006275696c645c62646973742e77696e33325c65
*67675c7365747570746f6f6c735c74657374735c746573745f7265736f75726365732e70797417
*0000007465737444697374726f446570656e647353696d706c6577000000730600000000010700
*0601630100000007000000080000004300000073b20100007400006700008301007d0100740100
*6700008301007d02007c00006902007403007c02006904006700007c0100830200830100670000
*830200017c00006905007406007c02006904007407006401008301007c01008304000174080069
*0900640200640300740a00640c008301008301017d03007c0100690b007c0300830100017c0100
*690b0074080069090064060083010083010001785500740c00640700830100445d47007d040074
*03007c02006904007407006401008301007c01008302008301007d05007c00006902007c05007c
*030067010083020001740d007c0200690b007c05008302000171a400577c0000690500740e007c
*02006904007407006408008301007c0100830400017401006700008301007d02007c0000690500
*7406007c02006904007407006409008301007c010083040001740800690900640a00640300740a
*00640d008301008301017d06007c0100690b007c0600830100017c00006902007403007c020069
*04007407006409008301007c01008302008301007c03007c0600670200830200017c0000690500
*740e007c0200690400740700640b008301007c01008304000164000053280e0000004e74030000
*00466f6f73140000002f666f6f5f6469722f466f6f2d312e322e6567675208000000730b000000
*646570656e64732e747874730e0000005b6261725d0a42617a3e3d322e30730b000000466f6f2d
*302e392e65676769030000007308000000466f6f3d3d302e397308000000466f6f5b6261725d73
*140000002f666f6f5f6469722f42617a2d322e312e6567677311000000466f6f3d3d312e320a46
*6f6f213d312e322802000000730b000000646570656e64732e747874730e0000005b6261725d0a
*42617a3e3d322e302802000000730b000000646570656e64732e7478747303000000466f6f280f
*00000052190000005223000000521b000000521c00000074070000007265736f6c766552260000
*007414000000446973747269627574696f6e4e6f74466f756e645224000000521e000000521f00
*00005206000000521d000000740500000072616e676574030000006d6170522700000028070000
*0052090000005228000000522d0000005245000000740100000069740700000074617267657473
*740300000042617a2800000000280000000073380000006275696c645c62646973742e77696e33
*325c6567675c7365747570746f6f6c735c74657374735c746573745f7265736f75726365732e70
*79740b000000746573745265736f6c76657c000000733600000000010c000c0222020601190206
*0106010f020d0016030d0006011e01130114010f0110010c0306011902060115020d0306012803
*0901630100000002000000050000004300000073b20000007c00006900006401008301007d0100
*7c00006901007c0100640200830200017c00006901007c01006403006902008300006404006701
*00830300017c00006901007c0100640500690200830000640600670100830300017c0000690100
*7c0100640700690200830000640400640600670200830300017c00006901007c01006408006902
*00830000640600640400670200830300017c00006903007404007c010069050064090067010083
*03000164000053280a0000004e73900000000a202020202020202020202020547769737465643e
*3d312e350a2020202020202020202020205b646f6367656e5d0a2020202020202020202020205a
*436f6e6669673e3d322e300a202020202020202020202020646f637574696c733e3d302e330a20
*20202020202020202020205b666173746367695d0a202020202020202020202020666367696170
*703e3d302e31730c000000547769737465643e3d312e357327000000547769737465643e3d312e
*35205a436f6e6669673e3d322e3020646f637574696c733e3d302e337406000000646f6367656e
*7319000000547769737465643e3d312e3520666367696170703e3d302e31740700000066617374
*6367697334000000547769737465643e3d312e35205a436f6e6669673e3d322e3020646f637574
*696c733e3d302e3320666367696170703e3d302e317334000000547769737465643e3d312e3520
*666367696170703e3d302e31205a436f6e6669673e3d322e3020646f637574696c733e3d302e33
*7403000000666f6f2806000000523f0000005242000000740500000073706c6974522600000074
*0c000000556e6b6e6f776e45787472615240000000280200000052090000005238000000280000
*0000280000000073380000006275696c645c62646973742e77696e33325c6567675c7365747570
*746f6f6c735c74657374735c746573745f7265736f75726365732e707974180000007465737444
*697374726f446570656e64734f7074696f6e73a5000000731c0000000001060609011001060116
*020601160206010c010d0206010c010d022800000000280c000000521100000052120000005231
*0000005239000000523b000000523c000000523d000000523f0000005242000000524400000052
*4d000000525300000028000000002800000000280000000073380000006275696c645c62646973
*742e77696e33325c6567675c7365747570746f6f6c735c74657374735c746573745f7265736f75
*726365732e707952140000001a00000073140000000602092f0908090b0906090a09030c060905
*0929740f000000456e747279506f696e7454657374736300000000000000000b00000042000000
*73aa0000006500005a01006400008400005a02006401008400005a03006402008400005a040064
*03008400005a05006404008400005a06006405008400005a070065080064060065090064060064
*0700640800670100830300640900650900640900640a00640b00670100640c00640d0067020083
*0400640e00650900640e00640f006410006411006701008302018300035a0a006412005a0b0064
*13008400005a0c006414008400005a0d0052532815000000630200000002000000030000004300
*0000737f0000007c00006900007c0100690100640100830200017c00006900007c010069020064
*0200830200017c00006900007c0100690300640600830200017c00006900007c01006904006407
*00830200017c00006905007c01006906008300007407006a0800830100017c0000690000740800
*7c0100830100640500830200016400005328080000004e5250000000731f000000736574757074
*6f6f6c732e74657374732e746573745f7265736f75726365735254000000740100000078733900
*0000666f6f203d207365747570746f6f6c732e74657374732e746573745f7265736f7572636573
*3a456e747279506f696e745465737473205b785d2801000000730f000000456e747279506f696e
*745465737473280100000052550000002809000000521b000000520c000000740b0000006d6f64
*756c655f6e616d65740500000061747472735241000000522000000074040000006c6f61645254
*000000740300000073747228020000005209000000740200000065702800000000280000000073
*380000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c7465
*7374735c746573745f7265736f75726365732e7079740c0000006173736572746669656c6473d0
*000000731000000000011301130113011301190106010901630100000001000000060000004300
*000073220000007400006901006401006402007402006405008301008301017c00005f03006400
*005328060000004e7314000000466f6f506b672d312e322d7079322e342e656767520800000073
*0c00000072657175697265732e74787473030000005b785d2802000000730c0000007265717569
*7265732e74787473030000005b785d2804000000521e000000521f0000005206000000522a0000
*00280100000052090000002800000000280000000073380000006275696c645c62646973742e77
*696e33325c6567675c7365747570746f6f6c735c74657374735c746573745f7265736f75726365
*732e707974050000007365745570db000000730400000000010601630100000002000000060000
*004300000073320000007400006401006402006403006701006404006701007c00006901008305
*007d01007c00006902007c0100830100016400005328050000004e5250000000731f0000007365
*747570746f6f6c732e74657374732e746573745f7265736f757263657352540000005255000000
*2803000000740a000000456e747279506f696e74522a000000525b000000280200000052090000
*00525a0000002800000000280000000073380000006275696c645c62646973742e77696e33325c
*6567675c7365747570746f6f6c735c74657374735c746573745f7265736f75726365732e707974
*0a00000074657374426173696373df0000007308000000000103010c0112026301000000030000
*00030000004300000073e20000006401007d01007400006901007c01007c00006902008302007d
*02007c00006903007c0200830100017400006901006402008301007d02007c00006904007c0200
*690500640300830200017c00006904007c0200690600640400830200017c00006904007c020069
*0700640a00830200017c00006904007c0200690800640b00830200017400006901006406008301
*007d02007c00006904007c0200690500640700830200017c00006904007c020069060064080083
*0200017c00006904007c0200690700640c00830200017c00006904007c0200690800640d008302
*000164000053280e0000004e7339000000666f6f203d207365747570746f6f6c732e7465737473
*2e746573745f7265736f75726365733a456e747279506f696e745465737473205b785d73180000
*006261722062617a3d20207370616d6d6974795b50494e475d73070000006261722062617a7408
*0000007370616d6d697479740400000070696e6773140000002066697a7a6c79203d2020776f63
*6b613a666f6f740600000066697a7a6c797405000000776f636b61525000000028000000002801
*000000526000000028010000007303000000666f6f28000000002809000000525d000000740500
*00007061727365522a000000525b000000521b000000520c000000525600000052570000005241
*00000028030000005209000000740100000073525a000000280000000028000000007338000000
*6275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c74657374735c
*746573745f7265736f75726365732e70797409000000746573745061727365e6000000731a0000
*000001060115010d020f0113011301130113020f01130113011301630100000002000000070000
*0043000000735d000000785600640100640200640300640400640500640600670600445d3c007d
*01007911007400006901007c010083010001576e1300047402006a0a006f070001010101711900
*01587403006407007c0100830200820100711900576400005328080000004e5250000000730500
*0000783d313d327307000000783d613a623a637306000000713d782f6e61730f00000066657a3d
*706973683a747573682d7a7308000000783d665b615d3e32731200000053686f756c6427766520
*6265656e206261642804000000525d0000005263000000740a00000056616c75654572726f7274
*0e000000417373657274696f6e4572726f7228020000005209000000525a000000280000000028
*0000000073380000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f
*6c735c74657374735c746573745f7265736f75726365732e7079740b0000007465737452656a65
*637473f700000073100000000001030116000602030011010e0005016302000000040000000500
*00004300000073680000007c00006900007401007c01008301007401007c000069020083010083
*0200017842007c0000690200690300830000445d31005c02007d02007d03007c00006900007404
*007c01006905007c02008301008301007404007c030083010083020001712f0057640000532801
*0000004e2806000000521b00000074030000006c656e740d0000007375626d61705f6578706563
*747409000000697465726974656d73740400000072657072740300000067657428040000005209
*00000074010000006d5234000000525a0000002800000000280000000073380000006275696c64
*5c62646973742e77696e33325c6567675c7365747570746f6f6c735c74657374735c746573745f
*7265736f75726365732e7079740b000000636865636b5375624d6170ff00000073080000000001
*1f0110000c0174080000006665617475726531740a000000736f6d656d6f64756c65740c000000
*736f6d6566756e6374696f6e74080000006665617475726532730e000000616e6f746865722e6d
*6f64756c657409000000536f6d65436c6173737406000000657874726131740600000065787472
*613274080000006665617475726533730b000000746869732e6d6f64756c655241000000740900
*0000736f6d657468696e6773cf0000000a2020202020202020202020202320646566696e652066
*6561747572657320666f7220626c616820626c61680a2020202020202020202020206665617475
*726531203d20736f6d656d6f64756c653a736f6d6566756e6374696f6e0a202020202020202020
*2020206665617475726532203d20616e6f746865722e6d6f64756c653a536f6d65436c61737320
*5b6578747261312c6578747261325d0a2020202020202020202020206665617475726533203d20
*746869732e6d6f64756c65205b736f6d657468696e675d0a202020206301000000010000000600
*00004300000073580000007c00006900007401006902006401007c000069030083020083010001
*7c0000690400740500740100690200640200640300830400017c00006904007405007401006902
*00640400640500640300670200830400016400005328060000004e740300000078797a73030000
*007820617307000000666f6f3d62617252550000007307000000666f6f3d62617a280600000052
*6f000000525d000000740b00000070617273655f67726f7570740a0000007375626d61705f7374
*725226000000526600000028010000005209000000280000000028000000007338000000627569
*6c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c74657374735c746573
*745f7265736f75726365732e7079740d0000007465737450617273654c69737410010000730800
*000000011c0119011201630100000002000000050000004300000073bc00000074000069010068
*01007c0000690200640100368301007d01007c00006903007c010064010019830100017c000069
*04007c0100690500830000640100670100830200017400006901006402007c0000690200178301
*007d01007c00006903007c010064010019830100017c00006904007c0100690500830000640100
*670100830200017c0000690600740700740000690100640300640300670200830300017c000069
*06007407007400006901007c0000690200830300016400005328040000004e5279000000730600
*00005b78797a5d0a73050000005b78797a5d2808000000525d000000740900000070617273655f
*6d6170527b000000526f000000521b00000074040000006b657973522600000052660000002802
*0000005209000000526e0000002800000000280000000073380000006275696c645c6264697374
*2e77696e33325c6567675c7365747570746f6f6c735c74657374735c746573745f7265736f7572
*6365732e7079740c0000007465737450617273654d617016010000731000000000011901110119
*011601110119011c01280e00000052110000005212000000525b000000525c000000525e000000
*52650000005268000000526f0000005207000000525d000000526a000000527b000000527c0000
*00527f00000028000000002800000000280000000073380000006275696c645c62646973742e77
*696e33325c6567675c7365747570746f6f6c735c74657374735c746573745f7265736f75726365
*732e70795254000000ce000000731a0000000602090b09040907091109080905060115011e011b
*07060209067411000000526571756972656d656e74735465737473630000000000000000010000
*0042000000733e0000006500005a01006400008400005a02006401008400005a03006402008400
*005a04006403008400005a05006404008400005a06006405008400005a07005253280600000063
*0100000002000000060000004300000073f30000007400006901006401008301007d01007c0000
*6902007403007c0100830100640100830200017c00006902007404007c01008301006402008302
*00017c00006902007c0100740000640300640b00670100640c00830300830200017c0000690200
*7c0100740000640600640d00670100640e00830300830200017c00006905007c01007400006403
*00640f00670100641000830300830200017c00006905007c010074000064080064110067010064
*1200830300830200017c00006905007c0100740000640800641300670100641400830300830200
*017c00006905007c0100740000690100640a00830100830200016400005328150000004e730c00
*0000547769737465643e3d312e327321000000526571756972656d656e742e7061727365282754
*7769737465643e3d312e32272974070000005477697374656473020000003e3d7303000000312e
*327407000000747769735465647303000000322e3074040000005a6f70657303000000332e3073
*14000000547769737465645b6578747261735d3e3d312e32280200000073020000003e3d730300
*0000312e322800000000280200000073020000003e3d7303000000312e32280000000028020000
*0073020000003e3d7303000000322e302800000000280200000073020000003e3d730300000031
*2e322800000000280200000073020000003e3d7303000000332e3028000000002806000000740b
*000000526571756972656d656e745263000000521b0000005259000000526c000000740e000000
*6173736572744e6f74457175616c28020000005209000000740100000072280000000028000000
*0073380000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c
*74657374735c746573745f7265736f75726365732e7079525e0000002201000073120000000001
*0f01160116011f011f011f011f011f016301000000030000000500000043000000737600000074
*00006401006407006408006702006409008303007d0100740000640100640a00640b0067020064
*0c008303007d02007c00006901007c01007c0200830200017c00006901007402007c0100830100
*7402007c0200830100830200017c00006901007402007c02008301006406008302000164000053
*280d0000004e528100000073020000003d3d7305000000312e32633173020000003e3d73030000
*00312e327314000000547769737465643d3d312e3263312c3e3d312e3228020000007302000000
*3d3d7305000000312e326331280200000073020000003e3d7303000000312e3228000000002802
*00000073020000003e3d7303000000312e32280200000073020000003d3d7305000000312e3263
*31280000000028030000005284000000521b000000525900000028030000005209000000740200
*00007231740200000072322800000000280000000073380000006275696c645c62646973742e77
*696e33325c6567675c7365747570746f6f6c735c74657374735c746573745f7265736f75726365
*732e7079740c000000746573744f72646572696e672d010000730a00000000011801180110011c
*01630100000005000000040000004300000073d700000074000064010064080067010064090083
*03007d01007401006902006404008301007d02007401006902006405008301007d030074010069
*02006406008301007d04007c00006903007404006403008301007c01006a0600830100017c0000
*6903007404006407008301007c01006a0700830100017c00006903006403007c01006a06008301
*00017c00006903006407007c01006a0700830100017c00006903007c02007c01006a0700830100
*017c00006903007c03007c01006a0700830100017c00006903007c04007c01006a060083010001
*64000053280a0000004e528100000073020000003e3d7303000000312e327310000000466f6f50
*6b672d312e335f312e656767730f000000547769737465642d312e312e656767730f0000005477
*69737465642d312e322e6567677303000000312e31280200000073020000003e3d730300000031
*2e32280000000028050000005284000000521e000000521f000000522000000052370000002805
*000000520900000052860000007408000000666f6f5f6469737474070000007477697374313174
*07000000747769737431322800000000280000000073380000006275696c645c62646973742e77
*696e33325c6567675c7365747570746f6f6c735c74657374735c746573745f7265736f75726365
*732e70797411000000746573744261736963436f6e7461696e7334010000731600000000011501
*0f010f010f011901190113011301130113016301000000030000000a00000043000000736d0000
*007400006401008301005c01007d0100782a00641300445d22007d02007c00006901007c02007c
*01006a06007c02007c01006602008302000171160057782a00641400445d22007d02007c000069
*01007c02007c01006a07007c02007c010066020083020001714300576400005328150000004e73
*2a000000466f6f3e3d312e322c3c3d312e332c3d3d312e392c3e322e302c213d322e352c3c332e
*302c3d3d342e357303000000312e327305000000312e322e327303000000312e33730300000031
*2e397305000000322e302e317303000000322e337303000000322e367305000000332e30633173
*03000000342e357305000000312e3263317305000000312e332e317303000000312e3573050000
*00312e392e317303000000322e307303000000322e357303000000332e307303000000342e3028
*090000007303000000312e327305000000312e322e327303000000312e337303000000312e3973
*05000000322e302e317303000000322e337303000000322e367305000000332e30633173030000
*00342e3528080000007305000000312e3263317305000000312e332e317303000000312e357305
*000000312e392e317303000000322e307303000000322e357303000000332e307303000000342e
*302802000000522400000052200000002803000000520900000052860000005243000000280000
*0000280000000073380000006275696c645c62646973742e77696e33325c6567675c7365747570
*746f6f6c735c74657374735c746573745f7265736f75726365732e707974140000007465737441
*6476616e636564436f6e7461696e7341010000730e00000000010f010700060120010700060163
*0100000004000000080000004300000073d30000007400006901006401008301007d0100740000
*6901006402008301007d02007400006901006403008301007d03007c00006902007c01007c0200
*830200017c00006902007c01007c0300830200017c00006902007c010069030064090083020001
*7c00006902007c0200690300640a00830200017c00006902007404007c01008301007404007c02
*00830100830200017c00006902007404007c010083010074040064060064070074050064080083
*01006602006601007406006404006405006702008301006603008301008302000164000053280b
*0000004e7315000000547769737465645b666f6f2c6261725d3e3d312e32731500000054776973
*7465645b6261722c464f4f5d3e3d312e327317000000547769737465645b4241522c464f4f5d3e
*3d312e322e305250000000740300000062617274070000007477697374656473020000003e3d73
*03000000312e3228020000007303000000666f6f528f0000002802000000528f00000073030000
*00666f6f280700000052840000005263000000521b000000524100000074040000006861736852
*37000000740900000066726f7a656e736574280400000052090000005287000000528800000074
*0200000072332800000000280000000073380000006275696c645c62646973742e77696e33325c
*6567675c7365747570746f6f6c735c74657374735c746573745f7265736f75726365732e707974
*15000000746573744f7074696f6e73416e6448617368696e6749010000731600000000010f010f
*010f0110011001130113011c0106012101630100000004000000030000004300000073da000000
*7400006901006401008301007d01007400006901006402008301007d02007402006903007d0300
*7c00006904007c03006403008301007c01006a0600830100017c00006904007c03006404008301
*007c01006a0600830100017c00006904007c03006403008301007c02006a0600830100017c0000
*6905007c03006405008301007c01006a0600830100017c00006905007c03006405008301007c02
*006a0600830100017c00006905007c03006406008301007c02006a0600830100017c0000690500
*7c03006407008301007c02006a0600830100016400005328080000004e73110000007365747570
*746f6f6c733d3d302e33613273110000007365747570746f6f6c73213d302e3361347314000000
*7365747570746f6f6c732d302e3361342e65676773140000007365747570746f6f6c732d302e33
*61312e65676773140000007365747570746f6f6c732d302e3361322e6567677314000000736574
*7570746f6f6c732d302e3361332e65676773140000007365747570746f6f6c732d302e3361352e
*656767280600000052840000005263000000521e000000521f00000074060000006661696c4966
*522000000028040000005209000000528700000052880000005238000000280000000028000000
*0073380000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c
*74657374735c746573745f7265736f75726365732e707974130000007465737456657273696f6e
*457175616c69747957010000731400000000010f010f0109021901190119021901190119012808
*00000052110000005212000000525e0000005289000000528d000000528e000000529400000052
*9600000028000000002800000000280000000073380000006275696c645c62646973742e77696e
*33325c6567675c7365747570746f6f6c735c74657374735c746573745f7265736f75726365732e
*7079528000000020010000730c0000000602090b0907090d0908090e740a000000506172736554
*65737473630000000000000000010000004200000073500000006500005a01006400008400005a
*02006401008400005a03006402008400005a04006403008400005a05006404008400005a060064
*05008400005a07006406008400005a08006407008400005a090052532808000000630100000001
*000000040000004300000073200000007c00006900007401007402006401008301008301006700
*00830200016400005328020000004e74000000002803000000521b000000521c00000052240000
*00280100000052090000002800000000280000000073380000006275696c645c62646973742e77
*696e33325c6567675c7365747570746f6f6c735c74657374735c746573745f7265736f75726365
*732e7079740e00000074657374456d707479506172736574010000730200000000016301000000
*030000000700000043000000737f00000078780067000067000066020064010064010067010066
*020067000067010067000066020064020064010064030067020066020064040064030067020064
*0100640300670200660200670500445d2b005c02007d01007d02007c0000690000740100740200
*6903007c01008301008301007c020083020001714c00576400005328050000004e525500000073
*0500000020780a20797401000000797303000000780a0a2804000000521b000000521c00000074
*0d000000706b675f7265736f7572636573520f000000280300000052090000007403000000696e
*7074030000006f75742800000000280000000073380000006275696c645c62646973742e77696e
*33325c6567675c7365747570746f6f6c735c74657374735c746573745f7265736f75726365732e
*7079740c000000746573745969656c64696e6777010000730a00000000010301300119000c0263
*01000000010000000800000043000000737b0000007c0000690000740100740200690300640100
*830100830100640000640200670100660200640300640400640500670200660200640600640700
*670100660200640800670000660200640900640a00670100660200670500830200017c00006905
*00740600740100740200690300640b008301008303000164000053280c0000004e73000100000a
*2020202020202020202020202020202020202020780a2020202020202020202020202020202020
*2020205b595d0a20202020202020202020202020202020202020207a0a0a202020202020202020
*2020202020202020202020610a20202020202020202020202020202020202020205b62205d0a20
*202020202020202020202020202020202020202320666f6f0a2020202020202020202020202020
*202020202020630a20202020202020202020202020202020202020205b20645d0a202020202020
*20202020202020202020202020205b715d0a202020202020202020202020202020202020202076
*0a2020202020202020202020202020202020202020525500000074010000005974010000007a74
*01000000617401000000627401000000635238000000740100000071524300000073040000005b
*666f6f2807000000521b000000521c000000529b000000740e00000073706c69745f7365637469
*6f6e73521a00000052260000005266000000280100000052090000002800000000280000000073
*380000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c7465
*7374735c746573745f7265736f75726365732e7079740d0000007465737453706c697474696e67
*7e010000730c000000000106010301060c09034302630100000001000000030000004300000073
*720000007c0000690000740100640100830100640100830200017c000069000074010064020083
*0100640300830200017c0000690000740100640400830100640300830200017c00006900007401
*00640500830100640600830200017c000069020074010064070083010064080083020001640000
*5328090000004e730b00000061646e732d707974686f6e730a00000057534749205574696c7373
*0a000000575347492d5574696c73730b0000005753474920205574696c73730d0000004d6f6e65
*792424244d616b6572730b0000004d6f6e65792d4d616b657273080000007065616b2e77656273
*080000007065616b2d7765622803000000521b0000007409000000736166655f6e616d65528500
*0000280100000052090000002800000000280000000073380000006275696c645c62646973742e
*77696e33325c6567675c7365747570746f6f6c735c74657374735c746573745f7265736f757263
*65732e7079740c00000074657374536166654e616d6594010000730a0000000001160116011601
*1601630100000001000000030000004300000073720000007c0000690000740100640100830100
*640100830200017c0000690000740100640200830100640300830200017c000069000074010064
*0400830100640500830200017c0000690000740100640600830100640700830200017c00006900
*00740100640800830100640800830200016400005328090000004e7305000000312e322d317309
*000000312e3220616c7068617309000000312e322e616c706861730e000000322e332e34203230
*303530353231730e000000322e332e342e3230303530353231730d0000004d6f6e65792424244d
*616b6572730b0000004d6f6e65792d4d616b657273080000007065616b2e776562280200000052
*1b000000740c000000736166655f76657273696f6e280100000052090000002800000000280000
*000073380000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c73
*5c74657374735c746573745f7265736f75726365732e7079740f00000074657374536166655665
*7273696f6e9b010000730a00000000011601160116011601630100000001000000070000004300
*000073f90000007c00006900007401007402006401008301008301007403006402006413006701
*00641400830300670100830200017c000069000074010074020064050083010083010074030064
*0600641500641600670200641700830300670100830200017c0000690000740300690400640a00
*830100740300640b00641800670100641900830300830200017c00006905007406007403006904
*00640e00830300017c0000690500740600740300690400640f00830300017c0000690500740600
*740300690400641000830300017c0000690500740600740300690400641100830300017c000069
*05007406007403006904006412008303000164000053281a0000004e730f000000547769732d54
*65643e3d312e322d317308000000547769732d54656473020000003e3d7305000000312e322d31
*731c00000054776973746564203e3d312e322c205c2023206d6f72650a3c322e30528100000073
*03000000312e3274010000003c7303000000322e30730e000000466f6f4261723d3d312e393961
*337406000000466f6f42617273020000003d3d7306000000312e3939613373050000003e3d322e
*337302000000785c7306000000783d3d3220717309000000583d3d310a593d3d32740100000023
*280200000073020000003e3d7305000000312e322d312800000000280200000073020000003e3d
*7303000000312e32280200000052ab0000007303000000322e3028000000002802000000730200
*00003d3d7306000000312e3939613328000000002807000000521b000000521c00000052240000
*005284000000526300000052260000005266000000280100000052090000002800000000280000
*000073380000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c73
*5c74657374735c746573745f7265736f75726365732e707974160000007465737453696d706c65
*526571756972656d656e7473a2010000731c000000000106010f01190206010f011c0206010c01
*160216011601160116016301000000020000000400000003000000739500000087000066010064
*01008600007d01007c0100640200640300830200017c0100640400640500830200017c01006406
*00640500830200017c0100640700640800830200017c0100640900640a00830200017c0100640b
*00640c00830200017c0100640d00640e00830200017c0100640c00640f00830200017c01006410
*00641100830200017c0100641200641300830200016400005328140000004e6302000000040000
*000700000013000000733c0000007400007c00008301007400007c0100830100027d02007d0300
*8800006901007c02007c03007c00007c01007c02007c0300660400830300016400005328010000
*004e28020000005237000000521b00000028040000007402000000733174020000007332740200
*000070317402000000703228010000005209000000280000000073380000006275696c645c6264
*6973742e77696e33325c6567675c7365747570746f6f6c735c74657374735c746573745f726573
*6f75726365732e707952a3000000b60100007304000000000119017307000000312e322d726331
*7306000000312e327263317303000000302e347305000000302e342e307307000000302e342e30
*2e307307000000302e342e302d307305000000302e342d30740400000030706c31730600000030
*2e30706c31740500000030707265317305000000302e306331730d000000302e302e3070726576
*6965773174030000003063317305000000302d7263317305000000312e3261317307000000312e
*322e612e317307000000312e322e2e2e617304000000312e326128000000002802000000520900
*000052a300000028000000002801000000520900000073380000006275696c645c62646973742e
*77696e33325c6567675c7365747570746f6f6c735c74657374735c746573745f7265736f757263
*65732e70795296000000b5010000731600000000010f040d010d010d010d010d010d010d010d01
*0d006301000000060000000700000003000000734c0100008700006601006401008600007d0100
*7c0100640200640300830200017c0100640400640500830200017c010064040064020083020001
*7c0100640600640700830200017c0100640800640900830200017c010064080064030083020001
*7c0100640200640a00830200017c0100640b00640200830200017c0100640c00640d0083020001
*7c0100640e00640f00830200017c0100641000641100830200017c010064120064130083020001
*7c0100641300641400830200017c0100641500641600830200017c010064170064180083020001
*7c0100641900641a00830200017c0100641b00641c00830200017c0100641d00641e0083020001
*641f006900008300007d02007840007401007c0200830100445d32005c02007d03007d04007823
*007c02007c0300642000171f445d13007d05007c01007c05007c040083020001712d0157711201
*576400005328210000004e6302000000040000000600000013000000733f0000007400007c0000
*8301007400007c0100830100027d02007d03008800006901007c02007c03006a00007c00007c01
*007c02007c0300660400830200016400005328010000004e280200000052370000005220000000
*280400000052af00000052b000000052b100000052b20000002801000000520900000028000000
*0073380000006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c
*74657374735c746573745f7265736f75726365732e707952a3000000c501000073040000000001
*19017303000000322e317305000000322e312e3174030000003261317403000000326230730500
*0000322e3361317303000000322e337305000000322e312d317305000000322e312d3273060000
*00322e31706c34730e000000322e3161302d32303034303530317303000000312e317304000000
*30322e31740300000041353674030000004232377303000000332e327307000000332e322e706c
*307305000000332e322d317306000000332e32706c317308000000332e32706c312d3173030000
*00302e347303000000342e307305000000302e302e347305000000302e342e3052b30000007306
*000000302e34706c317309000000322e312e302d7263317305000000322e312e30730600000032
*2e316465767305000000322e316130739c0000000a2020202020202020302e38302e312d332030
*2e38302e312d3220302e38302e312d3120302e37392e393939392b302e38302e30707265342d31
*0a2020202020202020302e37392e393939392b302e38302e30707265322d3320302e37392e3939
*39392b302e38302e30707265322d320a2020202020202020302e37372e322d3120302e37372e31
*2d3120302e37372e302d310a202020202020202069010000002802000000525100000074090000
*00656e756d65726174652806000000520900000052a30000007407000000746f72747572657401
*000000707402000000763174020000007632280000000028010000005209000000733800000062
*75696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c74657374735c74
*6573745f7265736f75726365732e707974130000007465737456657273696f6e4f72646572696e
*67c4010000733200000000010f040d010d010d010d010d010d010d010d010d010d010d010d010d
*010d010d010d010d010d060c020d000c010f000601280a00000052110000005212000000529900
*0000529e00000052a600000052a800000052aa00000052ae000000529600000052bf0000002800
*0000002800000000280000000073380000006275696c645c62646973742e77696e33325c656767
*5c7365747570746f6f6c735c74657374735c746573745f7265736f75726365732e707952970000
*007201000073100000000602090309070916090709070913090f74110000005363726970744865
*616465725465737473630000000000000000010000004200000073200000006500005a01006400
*005a02006401008400005a03006402008400005a04005253280300000073170000002f55736572
*732f4a6f73c3a92f62696e2f707974686f6e630100000001000000050000004300000073a50000
*007400006901006902006401008301000c701100017403007400006904008301000c6f7c00017c
*000069050074060064020083010064030074070069080069090074000069040083010016830200
*017c00006905007406006404008301006405007407006908006909007400006904008301001683
*0200017c00006905007406006406006407007c0000690a008301016408007c0000690a00168302
*00016e0100016400005328090000004e74040000006a617661731700000023212f7573722f6c6f
*63616c2f62696e2f707974686f6e7305000000232125730a731400000023212f7573722f62696e
*2f707974686f6e202d7873090000002321257320202d780a731100000023212f7573722f62696e
*2f707974686f6e740a00000065786563757461626c65730800000023212573202d780a280b0000
*00523a0000005215000000740a00000073746172747377697468520400000052c2000000521b00
*0000520300000074020000006f7374040000007061746874080000006e6f726d70617468740d00
*00006e6f6e5f61736369695f657865280100000052090000002800000000280000000073380000
*006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c7465737473
*5c746573745f7265736f75726365732e70797416000000746573745f6765745f7363726970745f
*686561646572f00100007310000000000125020f011a010f011a010f0109016301000000040000
*000800000043000000731b0100007400006901007d01006401007400005f01007400006902007d
*02007ae60074030069040069050074030069040069060074070083010064020019640300178301
*007d03007c00006908007409006404006405007c03008301016406007c03001683020001740a00
*690a008300007400005f02007c00006908007409006407006405007c03008301016408007c0300
*16830200017c0000690b00640900740000690200690c008300006a060083010001740a00690a00
*8300007400005f02007c0000690800740900640a006405007c0000690d00830101640b007c0000
*690d0016830200017c0000690b00640900740000690200690c008300006a060083010001576400
*007c01007400005f01007c02007400005f02005864000053280c0000004e730c0000006a617661
*312e352e305f3133690000000073030000002e7079731700000023212f7573722f6c6f63616c2f
*62696e2f707974686f6e52c2000000731200000023212f7573722f62696e2f656e762025730a73
*1400000023212f7573722f62696e2f707974686f6e202d7873090000002321257320202d780a73
*1c000000556e61626c6520746f2061646170742073686562616e67206c696e6573110000002321
*2f7573722f62696e2f707974686f6e730800000023212573202d780a280e000000523a00000052
*1500000074060000007374646f757452c400000052c500000052c6000000740800000073706c69
*7465787474080000005f5f66696c655f5f521b00000052030000007408000000537472696e6749
*4f74070000006173736572745f740800000067657476616c756552c70000002804000000520900
*0000521500000052c900000074030000006578652800000000280000000073380000006275696c
*645c62646973742e77696e33325c6567675c7365747570746f6f6c735c74657374735c74657374
*5f7265736f75726365732e70797428000000746573745f6765745f7363726970745f6865616465
*725f6a7974686f6e5f776f726b61726f756e64fb01000073280000000001090109010901030226
*0106010f010b040f010f0106010b011c010f010f0109010e012002090128050000005211000000
*521200000052c700000052c800000052d000000028000000002800000000280000000073380000
*006275696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c7465737473
*5c746573745f7265736f75726365732e707952c0000000ed010000730600000006010602090b28
*150000007408000000756e69747465737452000000005201000000529b000000741f0000007365
*747570746f6f6c732e636f6d6d616e642e656173795f696e7374616c6c52030000005204000000
*52c4000000523a00000052cc000000529200000074090000004e616d654572726f727404000000
*736574735205000000740d000000456d70747950726f7669646572520600000052140000005254
*0000005280000000529700000052c0000000280000000028000000002800000000733800000062
*75696c645c62646973742e77696e33325c6567675c7365747570746f6f6c735c74657374735c74
*6573745f7265736f75726365732e707974080000003c6d6f64756c653e04000000731a00000016
*000a0116013001030008010e011502160f16b416521652167b
}

Context:

[setup: remove bundled setuptools_darcs-1.2.8.tar
zooko@zooko.com**20100522015333
 Ignore-this: 378b1964b513ae7fe22bae2d3478285d
 This version of setuptools_darcs had a bug when used on Windows which has been fixed in setuptools_darcs-1.2.9. Hopefully we will not need to bundle a copy of setuptools_darcs-1.2.9 in with Tahoe-LAFS and can instead rely on it to be downloaded from PyPI or bundled in the "tahoe deps" separate tarball.
] 
[tests: fix pyflakes warnings in bench_dirnode.py
zooko@zooko.com**20100521202511
 Ignore-this: f23d55b4ed05e52865032c65a15753c4
] 
[setup: if the string '--reporter=bwverbose-coverage' appears on sys.argv then you need trialcoverage
zooko@zooko.com**20100521122226
 Ignore-this: e760c45dcfb5a43c1dc1e8a27346bdc2
] 
[tests: don't let bench_dirnode.py do stuff and have side-effects at import time (unless __name__ == '__main__')
zooko@zooko.com**20100521122052
 Ignore-this: 96144a412250d9bbb5fccbf83b8753b8
] 
[tests: increase timeout to give François's ARM buildslave a chance to complete the tests
zooko@zooko.com**20100520134526
 Ignore-this: 3dd399fdc8b91149c82b52f955b50833
] 
[run_trial.darcspath
freestorm77@gmail.com**20100510232829
 Ignore-this: 5ebb4df74e9ea8a4bdb22b65373d1ff2
] 
[docs: line-wrap README.txt
zooko@zooko.com**20100518174240
 Ignore-this: 670a02d360df7de51ebdcf4fae752577
] 
[Hush pyflakes warnings
Kevan Carstensen <kevan@isnotajoke.com>**20100515184344
 Ignore-this: fd602c3bba115057770715c36a87b400
] 
[setup: new improved misc/show-tool-versions.py
zooko@zooko.com**20100516050122
 Ignore-this: ce9b1de1b35b07d733e6cf823b66335a
] 
[Improve code coverage of the Tahoe2PeerSelector tests.
Kevan Carstensen <kevan@isnotajoke.com>**20100515032913
 Ignore-this: 793151b63ffa65fdae6915db22d9924a
] 
[Remove a comment that no longer makes sense.
Kevan Carstensen <kevan@isnotajoke.com>**20100514203516
 Ignore-this: 956983c7e7c7e4477215494dfce8f058
] 
[docs: update docs/architecture.txt to more fully and correctly explain the upload procedure
zooko@zooko.com**20100514043458
 Ignore-this: 538b6ea256a49fed837500342092efa3
] 
[Fix up the behavior of #778, per reviewers' comments
Kevan Carstensen <kevan@isnotajoke.com>**20100514004917
 Ignore-this: 9c20b60716125278b5456e8feb396bff
 
   - Make some important utility functions clearer and more thoroughly 
     documented.
   - Assert in upload.servers_of_happiness that the buckets attributes
     of PeerTrackers passed to it are mutually disjoint.
   - Get rid of some silly non-Pythonisms that I didn't see when I first
     wrote these patches.
   - Make sure that should_add_server returns true when queried about a 
     shnum that it doesn't know about yet.
   - Change Tahoe2PeerSelector.preexisting_shares to map a shareid to a set
     of peerids, alter dependencies to deal with that.
   - Remove upload.should_add_servers, because it is no longer necessary
   - Move upload.shares_of_happiness and upload.shares_by_server to a utility
     file.
   - Change some points in Tahoe2PeerSelector.
   - Compute servers_of_happiness using a bipartite matching algorithm that 
     we know is optimal instead of an ad-hoc greedy algorithm that isn't.
   - Change servers_of_happiness to just take a sharemap as an argument,
     change its callers to merge existing_shares and used_peers before 
     calling it.
   - Change an error message in the encoder to be more appropriate for 
     servers of happiness.
   - Clarify the wording of an error message in immutable/upload.py
   - Refactor a happiness failure message to happinessutil.py, and make
     immutable/upload.py and immutable/encode.py use it.
   - Move the word "only" as far to the right as possible in failure 
     messages.
   - Use a better definition of progress during peer selection.
   - Do read-only peer share detection queries in parallel, not sequentially.
   - Clean up logging semantics; print the query statistics whenever an
     upload is unsuccessful, not just in one case.
 
] 
[Alter the error message when an upload fails, per some comments in #778.
Kevan Carstensen <kevan@isnotajoke.com>**20091230210344
 Ignore-this: ba97422b2f9737c46abeb828727beb1
 
 When I first implemented #778, I just altered the error messages to refer to
 servers where they referred to shares. The resulting error messages weren't
 very good. These are a bit better.
] 
[Change "UploadHappinessError" to "UploadUnhappinessError"
Kevan Carstensen <kevan@isnotajoke.com>**20091205043037
 Ignore-this: 236b64ab19836854af4993bb5c1b221a
] 
[Alter the error message returned when peer selection fails
Kevan Carstensen <kevan@isnotajoke.com>**20091123002405
 Ignore-this: b2a7dc163edcab8d9613bfd6907e5166
 
 The Tahoe2PeerSelector returned either NoSharesError or NotEnoughSharesError
 for a variety of error conditions that weren't informatively described by them.
 This patch creates a new error, UploadHappinessError, replaces uses of 
 NoSharesError and NotEnoughSharesError with it, and alters the error message
 raised with the errors to be more in line with the new servers_of_happiness
 behavior. See ticket #834 for more information.
] 
[Eliminate overcounting iof servers_of_happiness in Tahoe2PeerSelector; also reorganize some things.
Kevan Carstensen <kevan@isnotajoke.com>**20091118014542
 Ignore-this: a6cb032cbff74f4f9d4238faebd99868
] 
[Change stray "shares_of_happiness" to "servers_of_happiness"
Kevan Carstensen <kevan@isnotajoke.com>**20091116212459
 Ignore-this: 1c971ba8c3c4d2e7ba9f020577b28b73
] 
[Alter Tahoe2PeerSelector to make sure that it recognizes existing shares on readonly servers, fixing an issue in #778
Kevan Carstensen <kevan@isnotajoke.com>**20091116192805
 Ignore-this: 15289f4d709e03851ed0587b286fd955
] 
[Alter 'immutable/encode.py' and 'immutable/upload.py' to use servers_of_happiness instead of shares_of_happiness.
Kevan Carstensen <kevan@isnotajoke.com>**20091104111222
 Ignore-this: abb3283314820a8bbf9b5d0cbfbb57c8
] 
[Alter the signature of set_shareholders in IEncoder to add a 'servermap' parameter, which gives IEncoders enough information to perform a sane check for servers_of_happiness.
Kevan Carstensen <kevan@isnotajoke.com>**20091104033241
 Ignore-this: b3a6649a8ac66431beca1026a31fed94
] 
[Alter CiphertextDownloader to work with servers_of_happiness
Kevan Carstensen <kevan@isnotajoke.com>**20090924041932
 Ignore-this: e81edccf0308c2d3bedbc4cf217da197
] 
[Revisions of the #778 tests, per reviewers' comments
Kevan Carstensen <kevan@isnotajoke.com>**20100514012542
 Ignore-this: 735bbc7f663dce633caeb3b66a53cf6e
 
 - Fix comments and confusing naming.
 - Add tests for the new error messages suggested by David-Sarah
   and Zooko.
 - Alter existing tests for new error messages.
 - Make sure that the tests continue to work with the trunk.
 - Add a test for a mutual disjointedness assertion that I added to
   upload.servers_of_happiness.
 - Fix the comments to correctly reflect read-onlyness
 - Add a test for an edge case in should_add_server
 - Add an assertion to make sure that share redistribution works as it 
   should
 - Alter tests to work with revised servers_of_happiness semantics
 - Remove tests for should_add_server, since that function no longer exists.
 - Alter tests to know about merge_peers, and to use it before calling 
   servers_of_happiness.
 - Add tests for merge_peers.
 - Add Zooko's puzzles to the tests.
 - Edit encoding tests to expect the new kind of failure message.
 - Edit tests to expect error messages with the word "only" moved as far
   to the right as possible.
 - Extended and cleaned up some helper functions.
 - Changed some tests to call more appropriate helper functions.
 - Added a test for the failing redistribution algorithm
 - Added a test for the progress message
 - Added a test for the upper bound on readonly peer share discovery.
 
] 
[Alter various unit tests to work with the new happy behavior
Kevan Carstensen <kevan@isnotajoke.com>**20100107181325
 Ignore-this: 132032bbf865e63a079f869b663be34a
] 
[Replace "UploadHappinessError" with "UploadUnhappinessError" in tests.
Kevan Carstensen <kevan@isnotajoke.com>**20091205043453
 Ignore-this: 83f4bc50c697d21b5f4e2a4cd91862ca
] 
[Add tests for the behavior described in #834.
Kevan Carstensen <kevan@isnotajoke.com>**20091123012008
 Ignore-this: d8e0aa0f3f7965ce9b5cea843c6d6f9f
] 
[Re-work 'test_upload.py' to be more readable; add more tests for #778
Kevan Carstensen <kevan@isnotajoke.com>**20091116192334
 Ignore-this: 7e8565f92fe51dece5ae28daf442d659
] 
[Test Tahoe2PeerSelector to make sure that it recognizeses existing shares on readonly servers
Kevan Carstensen <kevan@isnotajoke.com>**20091109003735
 Ignore-this: 12f9b4cff5752fca7ed32a6ebcff6446
] 
[Add more tests for comment:53 in ticket #778
Kevan Carstensen <kevan@isnotajoke.com>**20091104112849
 Ignore-this: 3bb2edd299a944cc9586e14d5d83ec8c
] 
[Add a test for upload.shares_by_server
Kevan Carstensen <kevan@isnotajoke.com>**20091104111324
 Ignore-this: f9802e82d6982a93e00f92e0b276f018
] 
[Minor tweak to an existing test -- make the first server read-write, instead of read-only
Kevan Carstensen <kevan@isnotajoke.com>**20091104034232
 Ignore-this: a951a46c93f7f58dd44d93d8623b2aee
] 
[Alter tests to use the new form of set_shareholders
Kevan Carstensen <kevan@isnotajoke.com>**20091104033602
 Ignore-this: 3deac11fc831618d11441317463ef830
] 
[Refactor some behavior into a mixin, and add tests for the behavior described in #778
"Kevan Carstensen" <kevan@isnotajoke.com>**20091030091908
 Ignore-this: a6f9797057ca135579b249af3b2b66ac
] 
[Alter NoNetworkGrid to allow the creation of readonly servers for testing purposes.
Kevan Carstensen <kevan@isnotajoke.com>**20091018013013
 Ignore-this: e12cd7c4ddeb65305c5a7e08df57c754
] 
[Update 'docs/architecture.txt' to reflect readonly share discovery
kevan@isnotajoke.com**20100514003852
 Ignore-this: 7ead71b34df3b1ecfdcfd3cb2882e4f9
] 
[Alter the wording in docs/architecture.txt to more accurately describe the servers_of_happiness behavior.
Kevan Carstensen <kevan@isnotajoke.com>**20100428002455
 Ignore-this: 6eff7fa756858a1c6f73728d989544cc
] 
[Alter wording in 'interfaces.py' to be correct wrt #778
"Kevan Carstensen" <kevan@isnotajoke.com>**20091205034005
 Ignore-this: c9913c700ac14e7a63569458b06980e0
] 
[Update 'docs/configuration.txt' to reflect the servers_of_happiness behavior.
Kevan Carstensen <kevan@isnotajoke.com>**20091205033813
 Ignore-this: 5e1cb171f8239bfb5b565d73c75ac2b8
] 
[Clarify quickstart instructions for installing pywin32
david-sarah@jacaranda.org**20100511180300
 Ignore-this: d4668359673600d2acbc7cd8dd44b93c
] 
[web: add a simple test that you can load directory.xhtml
zooko@zooko.com**20100510063729
 Ignore-this: e49b25fa3c67b3c7a56c8b1ae01bb463
] 
[setup: fix typos in misc/show-tool-versions.py
zooko@zooko.com**20100510063615
 Ignore-this: 2181b1303a0e288e7a9ebd4c4855628
] 
[setup: show code-coverage tool versions in show-tools-versions.py
zooko@zooko.com**20100510062955
 Ignore-this: 4b4c68eb3780b762c8dbbd22b39df7cf
] 
[docs: update README, mv it to README.txt, update setup.py
zooko@zooko.com**20100504094340
 Ignore-this: 40e28ca36c299ea1fd12d3b91e5b421c
] 
[Dependency on Windmill test framework is not needed yet.
david-sarah@jacaranda.org**20100504161043
 Ignore-this: be088712bec650d4ef24766c0026ebc8
] 
[tests: pass z to tar so that BSD tar will know to ungzip
zooko@zooko.com**20100504090628
 Ignore-this: 1339e493f255e8fc0b01b70478f23a09
] 
[setup: update comments and URLs in setup.cfg
zooko@zooko.com**20100504061653
 Ignore-this: f97692807c74bcab56d33100c899f829
] 
[setup: reorder and extend the show-tool-versions script, the better to glean information about our new buildslaves
zooko@zooko.com**20100504045643
 Ignore-this: 836084b56b8d4ee8f1de1f4efb706d36
] 
[CLI: Support for https url in option --node-url
Francois Deppierraz <francois@ctrlaltdel.ch>**20100430185609
 Ignore-this: 1717176b4d27c877e6bc67a944d9bf34
 
 This patch modifies the regular expression used for verifying of '--node-url'
 parameter.  Support for accessing a Tahoe gateway over HTTPS was already
 present, thanks to Python's urllib.
 
] 
[backupdb.did_create_directory: use REPLACE INTO, not INSERT INTO + ignore error
Brian Warner <warner@lothar.com>**20100428050803
 Ignore-this: 1fca7b8f364a21ae413be8767161e32f
 
 This handles the case where we upload a new tahoe directory for a
 previously-processed local directory, possibly creating a new dircap (if the
 metadata had changed). Now we replace the old dirhash->dircap record. The
 previous behavior left the old record in place (with the old dircap and
 timestamps), so we'd never stop creating new directories and never converge
 on a null backup.
] 
["tahoe webopen": add --info flag, to get ?t=info
Brian Warner <warner@lothar.com>**20100424233003
 Ignore-this: 126b0bb6db340fabacb623d295eb45fa
 
 Also fix some trailing whitespace.
] 
[docs: install.html http-equiv refresh to quickstart.html
zooko@zooko.com**20100421165708
 Ignore-this: 52b4b619f9dde5886ae2cd7f1f3b734b
] 
[docs: install.html -> quickstart.html
zooko@zooko.com**20100421155757
 Ignore-this: 6084e203909306bed93efb09d0e6181d
 It is not called "installing" because that implies that it is going to change the configuration of your operating system. It is not called "building" because that implies that you need developer tools like a compiler. Also I added a stern warning against looking at the "InstallDetails" wiki page, which I have renamed to "AdvancedInstall".
] 
[Fix another typo in tahoe_storagespace munin plugin
david-sarah@jacaranda.org**20100416220935
 Ignore-this: ad1f7aa66b554174f91dfb2b7a3ea5f3
] 
[Add dependency on windmill >= 1.3
david-sarah@jacaranda.org**20100416190404
 Ignore-this: 4437a7a464e92d6c9012926b18676211
] 
[licensing: phrase the OpenSSL-exemption in the vocabulary of copyright instead of computer technology, and replicate the exemption from the GPL to the TGPPL
zooko@zooko.com**20100414232521
 Ignore-this: a5494b2f582a295544c6cad3f245e91
] 
[munin-tahoe_storagespace
freestorm77@gmail.com**20100221203626
 Ignore-this: 14d6d6a587afe1f8883152bf2e46b4aa
 
 Plugin configuration rename
 
] 
[setup: add licensing declaration for setuptools (noticed by the FSF compliance folks)
zooko@zooko.com**20100309184415
 Ignore-this: 2dfa7d812d65fec7c72ddbf0de609ccb
] 
[setup: fix error in licensing declaration from Shawn Willden, as noted by the FSF compliance division
zooko@zooko.com**20100309163736
 Ignore-this: c0623d27e469799d86cabf67921a13f8
] 
[CREDITS to Jacob Appelbaum
zooko@zooko.com**20100304015616
 Ignore-this: 70db493abbc23968fcc8db93f386ea54
] 
[desert-island-build-with-proper-versions
jacob@appelbaum.net**20100304013858] 
[docs: a few small edits to try to guide newcomers through the docs
zooko@zooko.com**20100303231902
 Ignore-this: a6aab44f5bf5ad97ea73e6976bc4042d
 These edits were suggested by my watching over Jake Appelbaum's shoulder as he completely ignored/skipped/missed install.html and also as he decided that debian.txt wouldn't help him with basic installation. Then I threw in a few docs edits that have been sitting around in my sandbox asking to be committed for months.
] 
[TAG allmydata-tahoe-1.6.1
david-sarah@jacaranda.org**20100228062314
 Ignore-this: eb5f03ada8ea953ee7780e7fe068539
] 
Patch bundle hash:
6b9f4635b391a14c554b511fb34d83a626459bb4
