ÿØÿà JFIF    ÿÛ „  ( %"1!%)+...383,7(-.+  -+++--++++---+-+-----+---------------+---+-++7-----ÿÀ  ß â" ÿÄ     ÿÄ H    !1AQaq"‘¡2B±ÁÑð#R“Ò Tbr‚²á3csƒ’ÂñDS¢³$CÿÄ   ÿÄ %  !1AQa"23‘ÿÚ   ? ôÿ ¨pŸªáÿ —åYõõ\?àÒü©ŠÄï¨pŸªáÿ —åYõõ\?àÓü©ŠÄá 0Ÿªáÿ Ÿå[úƒ ú®ði~TÁbqÐ8OÕpÿ ƒOò¤Oè`–RÂáœá™êi€ßÉ< FtŸI“öÌ8úDf´°å}“¾œ6  öFá°y¥jñÇh†ˆ¢ã/ÃÐ:ªcÈ "Y¡ðÑl>ÿ ”ÏËte:qž\oäŠe÷󲍷˜HT4&ÿ ÓÐü6ö®¿øþßèô Ÿ•7Ñi’•j|“ñì>b…þS?*Óôÿ ÓÐü*h¥£ír¶ü UãS炟[AÐaè[ûª•õ&õj?†Éö+EzP—WeÒírJFt ‘BŒ†Ï‡%#tE Øz ¥OÛ«!1›üä±Í™%ºÍãö]°î(–:@<‹ŒÊö×òÆt¦ãº+‡¦%ÌÁ²h´OƒJŒtMÜ>ÀÜÊw3Y´•牋4ǍýʏTì>œú=Íwhyë,¾Ôò×õ¿ßÊa»«þˆѪQ|%6ž™A õ%:øj<>É—ÿ Å_ˆCbõ¥š±ý¯Ýƒï…¶|RëócÍf溪“t.СøTÿ *Ä¿-{†çàczůŽ_–^XþŒ±miB[X±d 1,é”zEù»& î9gœf™9Ð'.;—™i}!ôšåîqêÛ٤ёý£½ÆA–àôe"A$˝Úsäÿ ÷Û #°xŸëí(l »ý3—¥5m! rt`†0~'j2(]S¦¦kv,ÚÇ l¦øJA£Šƒ J3E8ÙiŽ:cÉžúeZ°€¯\®kÖ(79«Ž:¯X”¾³Š&¡* ….‰Ž(ÜíŸ2¥ª‡×Hi²TF¤ò[¨íÈRëÉ䢍mgÑ.Ÿ<öäS0í„ǹÁU´f#Vß;Õ–…P@3ío<ä-±»Ž.L|kªÀê›fÂ6@»eu‚|ÓaÞÆŸ…¨ááå>åŠ?cKü6ùTÍÆ”†sĤÚ;H2RÚ†õ\Ö·Ÿn'¾ ñ#ºI¤Å´%çÁ­‚â7›‹qT3Iï¨ÖÚ5I7Ë!ÅOóŸ¶øÝñØôת¦$Tcö‘[«Ö³šÒ';Aþ ¸èíg A2Z"i¸vdÄ÷.iõ®§)¿]¤À†–‡É&ä{V¶iŽ”.Ó×Õÿ û?h¬Mt–íª[ÿ Ñÿ ÌV(í}=ibÔ¡›¥¢±b Lô¥‡piη_Z<‡z§èŒ)iÖwiÇ 2hÙ3·=’d÷8éŽ1¦¸c¤µ€7›7Ø ð\á)} ¹fËí›pAÃL%âc2 í§æQz¿;T8sæ°qø)QFMð‰XŒÂ±N¢aF¨…8¯!U  Z©RÊ ÖPVÄÀÍin™Ì-GˆªÅËŠ›•zË}º±ŽÍFò¹}Uw×#ä5B¤{î}Ð<ÙD é©¤&‡ïDbàÁôMÁ." ¤‡ú*õ'VŽ|¼´Úgllº¼klz[Æüï÷Aób‡Eÿ dÑ»Xx9ÃÜ£ÁT/`¼¸vI±Ýµ·Ë‚“G³þ*Ÿû´r|*}<¨îºœ @¦mÄ’M¹”.œ«Y–|6ÏU¤jç¥ÕÞqO ˜kDÆÁ¨5ÿ š;ÐЦ¦€GÙk \ –Þ=â¼=SͧµªS°ÚÍpÜãQűÀõ¬?ÃÁ1Ñ•õZà?hóœ€ L¦l{Y*K˜Ù›zc˜–ˆâ ø+¾ ­-Ök¥%ùEÜA'}ˆ><ÊIè“bpÍ/qÞâvoX€w,\úªò6Z[XdÒæ­@Ö—€$òJí#é>'°Ú ôª˜<)4ryÙ£|óAÅn5žêŸyÒäMÝ2{"}‰–¤l÷ûWX\l¾Á¸góÉOÔ /óñB¤f¸çñ[.P˜ZsÊË*ßT܈§QN¢’¡¨§V¼(Üù*eÕ“”5T¨‹Âê¥FŒã½Dü[8'Ò¥a…Ú¶k7a *•›¼'Ò·\8¨ª\@\õ¢¦íq+DÙrmÎ…_ªæ»ŠÓœ¡¯’Ré9MÅ×D™lælffc+ŒÑ,ý™ÿ ¯þǤ=Å’Á7µ÷ÚÛ/“Ü€ñýã¼àí¾ÕÑ+ƒ,uµMâÀÄbm:ÒÎPæ{˜Gz[ƒ¯«® KHà`ߨŠéí¯P8Aq.C‰ à€kòpj´kN¶qô€…Õ,ÜNŠª-­{Zö’æû44‰sŽè‰îVíRœÕm" 6?³D9¡ÇTíÅꋇ`4«¸ÝÁô ï’ýorqКÇZ«x4Žâéþuïf¹µö[P ,Q£éaX±`PÉÍZ ¸äYúg üAx ’6Lê‚xÝÓ*äQ  Ï’¨hÍ =²,6ï#rÃ<¯–£»ƒ‹,–ê•€ aÛsñ'%Æ"®ÛüìBᝠHÚ3ß°©$“XnœÖ’î2ËTeûìxîß ¦å¿çÉ ðK§þ{‘t‚Ϋ¬jéîZ[ ”š7L¥4VÚCE×]m¤Øy”ä4-dz£œ§¸x.*ãÊÊ b÷•h:©‡¦s`BTÁRû¾g⻩‹jø sF¢àJøFl‘È•Xᓁà~*j¯ +(ÚÕ6-£¯÷GŠØy‚<Ç’.F‹Hœw(+)ÜÜâÈzÄäT§FߘãÏ;DmVœ3Àu@mÚüXÝü•3B¨òÌÁÛ<·ÃÜ z,Ì@õÅ·d2]ü8s÷IôÞ¯^Ç9¢u„~ëAŸï4«M? K]­ÅàPl@s_ p:°¬ZR”´›JC[CS.h‹ƒïËœ«Æ]–÷ó‚wR×k7X‰k›‘´ù¦=¡«‰¨¨Â')—71ó’c‡Ðúµ `é.{§p¹ój\Ž{1h{o±Ý=áUÊïGÖŒõ–-BÄm+AZX¶¡ ïHðæ¥JmÙ;…䡟ˆ¦ ° äšiÉg«$üMk5¤L“’çÊvïâï ,=f“"íἊ5ô¬x6{ɏžID0e¸vçmi'︧ºð9$ò¹÷*£’9ÿ ²TÔ…×>JV¥}Œ}$p[bÔ®*[jzS*8 ”·T›Í–ñUîƒwo$áè=LT™ç—~ô·¤ÈÚ$榍q‰„+´kFm)ž‹©i–ËqÞŠ‰à¶ü( ‚•§ •°ò·‡#5ª•µÊ﯅¡X¨šÁ*F#TXJÊ ušJVÍ&=iÄs1‚3•'fý§5Ñ<=[íÞ­ PÚ;ѱÌ_~Ä££8rÞ ²w;’hDT°>ÈG¬8Á²ÚzŽ®ò®qZcqJêäÞ-ö[ܘbň±çb“ж31²n×iƒðÕ;1¶þÉ ªX‰,ßqÏ$>•î íZ¥Z 1{ç൵+ƒÕµ¥°T$§K]á»Ûï*·¤tMI’ÂZbŽÕiÒ˜}bÓ0£ª5›¨ [5Ž^ÝœWøÂÝh° ¢OWun£¤5 a2Z.G2³YL]jåtì”ä ÁÓ‘%"©<Ôúʰsº UZvä‡ÄiÆÒM .÷V·™ø#kèýiíÌ–ª)µT[)BˆõÑ xB¾B€ÖT¨.¥~ð@VĶr#¸ü*åZNDŽH;âi ],©£öØpù(šºãö¼T.uCê•4@ÿ GÕÛ)Cx›®0ø#:ÏðFÒbR\(€€Ä®fã4Þ‰Fä¯HXƒÅ,†öEÑÔÜ]Öv²?tLÃvBY£ú6Êu5ÅAQ³1‘’¬x–HŒÐ‡ ^ ¸KwJôÖŽ5×CÚ¨vÜ«/B0$×k°=ðbÇ(Ï)w±A†Á† 11Í=èQšµ626ŒÜ/`G«µ<}—-Ö7KEHÈÉðóȤmݱû±·ø«Snmá=“䫚mݱŸ¡¶~ó·“äUóJæúòB|E LêŽy´jDÔ$G¢þÐñ7óR8ýÒ…Ç› WVe#·Ÿ p·Fx~•ݤF÷0Èÿ K¯æS<6’¡WШ; ´ÿ ¥Êø\Òuî†åÝ–VNœkÒ7oòX¨Á­Ø÷FÎÑä±g÷ÿ M~Çî=p,X´ ÝÌÚÅ‹’ÃjÖ.ØöÏñ qïQ¤ÓZE†° =6·]܈ s¸>v•Ž^Ý\wq9r‰Î\¸¡kURÒ$­*‹Nq?Þª*!sŠÆ:TU_u±T+øX¡ ®¹¡,ÄâÃBTsÜ$Ø›4m椴zÜK]’’›Pƒ @€#â˜`é¹=I‡fiV•Ôî“nRm+µFPOhÍ0B£ €+¬5c v•:P'ÒyÎ ‰V~‚Ó†ÖuókDoh$å\*ö%Ю=£«…aȼ½÷Û.-½VŒŠ¼'lyî±1¬3ó#ÞE¿ÔS¤gV£m›=§\û"—WU¤ÚǼÿ ÂnÁGŒÃ ‚õN D³õNÚíŒÕ;HôyÄÈ©P¹Ä{:?R‘Ô¨âF÷ø£bÅó® JS|‚R÷ivýáâ€Æé¡è³´IئÑT!§˜•ت‚¬â@q€wnïCWÄ@JU€ê¯m6]Ï:£âx'+ÒðXvÓ¦Úm=–´7œ $ì“B£~p%ÕŸUþ« N@¼üï~w˜ñø5®—'Ôe»¤5ã//€ž~‰Tþ›Å7•#¤× Íö pÄ$ùeåì*«ÓŠEØWEÈsßg ¦ûvžSsLpºÊW–âµEWöˬH; ™!CYõZ ÃÄf æ#1W. \uWâ\,\Çf j’<qTbên›Î[vxx£ë 'ö¨1›˜ÀM¼Pÿ H)ƒêêŒA7s,|F“ 꺸k³9Ìö*ç®;Ö!Ö$Eiž•¹ÒÚ†ýóéÝû¾ÕS®ó$’NÝäŸz¤5r¦ãÄÃD÷Üø!°ø‡Ô&@m™Ì^Ãä­d q5Lnÿ N;.6½·N|#ä"1Nƒx“ã<3('&ñßt  ~ªu”1Tb㫨9ê–›–bìd$ߣ=#ÕãÒmU¯eí$EFù5ýYô櫨æì™Ç—±ssM]·á¿0ÕåJRÓªîiƒ+O58ÖñªŠÒx" \µâá¨i’¤i —Ö ” M+M¤ë9‚‰A¦°Qõ¾ßøK~¼Ã‘g…Ö´~÷Ï[3GUœÒ½#…kàÔ®Ò”‰³·dWV‰IP‰Ú8u¹”E ÖqLj¾êÕCBš{A^Âß;–¨`¯¬ìö ˼ ×tìø.tƐm*n¨y4o&Àx¥n¦×î‡aupáÛj8¿m›è¶ã!o½;ß0y^ý×^EÑ¿ÒjzŒ­)vÚÑnÄL …^ªô× ‡—‚3k Îý­hï]içå–îÏ*÷ñþ»Ô CÒjøjÍznˆ´ ¹#b'Fô‹ ‰v¥'’à'T´ƒHýÍ%M‰ ƒ&ÆÇŒï1 ‘ –Þ ‰i¬s žR-Ÿ kЬá¬7:þ 0ŒÅÒÕ/aÙ¬ÃÝ#Úøœ ©aiVc‰. ¹¦ãµ” ›Yg¦›ÆÎýº°f³7ƒhá·¸­}&D9¡ÂsÉÙÞèŠõØàC™¨ñbFC|´Ü(ŸƒÚÒ-%»'a Ì¿)ËÇn¿úÿ ÞŽX…4ÊÅH^ôΑí@ù¹Eh¶“L8Çjù ¼ÎåVªóR©Ï5uà V4lZß®=€xÖŸ–ÑÈ ÷”¨°¾__yM1tÉ?uÆþIkÄgæ@þ[¢†°XÃJ£j·:nkÅ¢u ‘}âGzö­/IµèЬ¼48q¦F°ŽR¼=ûì{´¯RýicS ÕÛ íNtÍÙï£,w4rêì®»~x(©Uñ§#Ñ&œÕ¤>ÎåÍÓ9’Ö{9eV­[Öjâ²ãu]˜å2›qÑšÕJç0€sÄ|Êëè0튔bÁ>“{×_F`Ø©ºê:µä,v¤ðfc1±"«ÔÍän1#=· Âøv~H½ÐßA¾¿Ü€Óš]Õ; I¾÷ç‚Qi†î¹9ywÔKG˜áñ zQY—§ÃÕZ07§X‚ Áh;ÁM)iÌCH-¯T‘ë|A0{Ò½LÚ–TâÖkÜ’dÀ“rmm»”جPF³ÖcbE§T€ÒxKºû’Ó®7±²(\4ŽÃ¸Uu@j™yĵ;³µ!Á¢b.W¤=mõ´êµK k ¸K^ÜÛ#p*Ü14qkZç5ïë †°5Ï%ÍÛ<Õ¤×Ô¥ê†C Õ´¼ú$ƒÖ“”]Ù¬qÞÚ[4©ý!ûÏ—Áb쳐XµA¬â~`›Çr¸8ìùÝ䫦<>ä÷«?xs´ÇÑ /á;¹øüÊÈÙà{"@Žïzâ¬[âß‚ U_<ÇŸ½4èN˜ú61®qŠu ¦þF£»äJ_ˆÙÎ~ ÞAã–݄ϗrŠD;xTž‘ô`É«…suãO`?³à™ô Lý#Íc5öoæØ‚y´´÷«ZR§<&JÇ+éâô´€i!Àˆ0æAoàðLèÖ-2ŸõW.’t^–(KÁmHµV@xÜÇy®Ñø­â^:Ú3w· 7½¹°ñ¸â¹®:',«Mœ—n­Á+Ãbš LÈ‘ÄnRÓÅœ%¦²‰¨ùQ:¤f‚ "PÕtô¸…cæl…&˜Ú˜Ôkv‹ž+vŠ,=¢v­6—Xy*¥t£«<™:“aîϲ=¦6rO]XI¿Œ÷¤zÚ­›¶ 6÷”w\d ü~v®ˆÌk«^m<ÿ ¢‰Õ\)ùºŽ;… lîÙÅEŠ®cѾ@vnMÏ,¼“ñ•ŽBxðÃzãÇç%3ˆ"}Ù•Åî> BÉú;Ò]V+P˜F_´ßé> Øše|ï‡ÄOmFæÇ ãqÞ$/xÐx­z`ï9"œÜij‚!7.\Td…9M‡•iŽ‹¾‘50ÞŽn¥ß4ÉôO ¹*í^QêËÜÇÌ8=ާs‰'ÂëÙ«á%Pú[O †ÅP¯Vsް.‰,kc¶ ¬A9n˜XÎ-ÞšN["¹QÕ‰ƒMýÁߺXJæÍaLj¾×Ãmã¾ãÚ uñÒþåQô¦¥ /ÄUx:‚ÍÜ’ Đ©ØÝ3V¨‰ÕnÐ6ó*óúK­«…c ¯U òhsý­jóÔj#,ímŒRµ«lbïUTŒÑ8†Ä0œÏr`ð¡¬É Ї ë"À² ™ 6¥ f¶ ¢ÚoܱԷ-<Àî)†a¶ž'Ú»¨TXqØæ¶÷YÄHy˜9ÈIW­YÀuMFë ºÏ’AqÌ4·/Ú †ô'i$øä­=Ä Ý|öK×40è|È6p‘0§)o¥ctî§H+CA-“ xØ|ÐXАç l8íºð3Ø:³¤¬KX¯UÿÙ  &tWc@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlmZddlmZddlmZddlmZddlmZddlmZddlmZdd lmZdd lmZdd lmZdd lm Z dd lm!Z!ddlm"Z"ddlm#Z#ddlm$Z$ddlm%Z%ddlm&Z&ddlm'Z'ddlm(Z(ddlm)Z)ddlm*Z*ddlm+Z+ddlm,Z,ddlm-Z-ddl.m/Z/ddl.m0Z0ddl.m1Z1ddl.m2Z2ej3j4ej3j5e6Z7ej3j8e7dZ9e:e9j;j<Z=dZ>d fd!YZ?d"fd#YZ@d$e@fd%YZAd&e@fd'YZBgZCd(ejDfd)YZEd*eFfd+YZGd,eGfd-YZHd.eHfd/YZId0eHfd1YZJd2eGfd3YZKd4eGfd5YZLd6eKfd7YZMd8ZNd9ZOd:ZPeQaRd;ZSd<ZTd=fd>YZUd?ZVd@ZWdAZXdBeYfdCYZZdDeZfdEYZ[dFeZfdGYZ\dHeZfdIYZ]dJeZfdKYZ^dS(LiN(t asyncore_25(tprocess_or_group_name(tboolean(tinteger(t name_to_uid(t gid_for_uid(texisting_dirpath(t byte_size(t signal_number(tlist_of_exitcodes(tdict_of_key_value_pairs(t logfile_name(tlist_of_strings(t octal_type(texisting_directory(t logging_level(tcolon_separated_user_group(t inet_address(tInetStreamSocketConfig(tUnixStreamSocketConfig(turl(t Automatic(t auto_restart(tprofile_options(tloggers(tstates(txmlrpc(tpollers version.txtcCs(tjjtjjtjj|S(N(tostpathtnormpathtabspatht expanduser(tv((s6/usr/lib/python2.7/dist-packages/supervisor/options.pytnormalize_path8stDummycBseZRS((t__name__t __module__(((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyR#;stOptionsc BseZejZejZejZeZdZZ ej dZ dZ dZ dZdZdZedZdZdZdZdddddddddd ZdZddddZedZd Zd Zd d Zd ZdZRS(icCs(g|_g|_g|_i|_i|_i|_i|_i|_||_|j d d dd|j |j dd ddt j jt j jtjd}t j j|ddt j j|ddd d d g}||_i|_x.t jjD]\}}||jd |tconfigR((s6/usr/lib/python2.7/dist-packages/supervisor/options.pytdefault_configfileps cCs[|jd}|jddkr:|jd|j}n|jj||jddS(sxPrint a long help message to stdout and exit(0). Occurrences of "%s" in are replaced by self.progname. s s%siN(tdoctfindtreplacetprognametstdouttwritetexit(R>tdummyR(((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyR(}s  cCsB|jjdt||jjd|j|jddS(s2Print a brief error message to stderr and exit(2).s Error: %s sFor help, use %s -h iN(tstderrRKtstrRIRL(R>tmsg((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRCsc Cs|dk r|dk r'tdn| rD| rDtdn|rh|jdrhtdn|r|jdrtdn|d}n|r|r|jd|jdkrtd||fqn|r|ddkrtd n|d |d } } | dkr6td nd| } |jj| retd | n||f|j| <|jj|n|r(|ddkrtdn|} | ddkr| d } nd| } |jj| rtd| n||f|j| <|jj|n| rD||f|j| ts&inconsistent short/long options: %r %rit-s&short option should not start with '-'iRVs"short option should be 'x' or 'x:'sduplicate short option key '%s's%long option should not start with '-'is--sduplicate long option key '%s'N(RVRQ(R5t ValueErrortendswithR.thas_keyR,tappendR-R1thasattrtsetattrR+R/R0( R>tnametconfnametshorttlongthandlertdefaulttrequiredRTtenvtkeytrest((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyR4s\        cCsE|jj|d}||krAt|||||j|tattrtvaluetpriotcurrent((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyt_sets cCs |dkrtjd}n|dkr8tjd}n|dkr\ddl}|j}n||_||_g|_g|_y4t j |dj |j |j \|_|_Wn)t j k r}|jt|nX|jr|j r|jdt|jnx|jD]\}}|j|\}} | dk ry| |}Wqtk r} |jd||| fqXn|r|dk rt||dk r|jd|n|j||d qqWx|jjD]} |j| \}} tjj| rtj| } | dk rty| | } Wqttk rp} |jd | | | fqtXn|r| dk r|j|| dqqqW|jdkrtj} | dkrd |jkr|jjd n|j|_n|jdS( sRealize a configuration. Optional arguments: args -- the command line arguments, less the program name (default is sys.argv[1:]) doc -- usage message (default is __main__.__doc__) iiiNRVs*positional arguments are not supported: %ssinvalid value for %s %r: %ss"conflicting command line option %ris'invalid environment value for %s %r: %st supervisordsSupervisord is running as root and it is searching for its configuration file in default locations (including its current working directory); you probably want to specify a "-c" argument specifying an absolute path to a configuration file for improved security.( R5R7R8t__main__t__doc__RIRFtoptionstargstgetoptR9R,R-terrorRCROtpositional_args_allowedR.RXtgetattrRmR1tkeysRR<RZR)tgetuidtwarningstwarnREtprocess_config(R>RrRFRIRotexctoptRSR^RbRPtenvvarRjtuid((s6/usr/lib/python2.7/dist-packages/supervisor/options.pytrealizes`         . !      c Cs(|jr|j|nx{|jD]p\}}|r#|jd}|j}x-|D]%}|dkrjPnt||}qTW|j||dq#q#WxE|jj D]4\}}t||dkrt |||qqWxB|j j D]1\}}t||dkr|j |qqWdS(s}Process configuration data structure. This includes reading config file if necessary, setting defaults etc. t.iN( R)tprocess_config_fileR+tsplitt configrootR5RvRmR/R=R]R0RC( R>tdo_usageR^R_tpartstobjtpartRjtmessage((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyR{6s"    cCst|jds9tjjtjj|j|_ny|j|jWn;tk r}|r{|j t |qt|nXdS(Ntread( R\R)RRRR6R?t read_configRXRCRO(R>RRP((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRUs'cCstjj|S(N(RRRB(R>R((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRBcstrcCs t||S(N(topen(R>tfntmode((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRfsc Csg}x|jD]}|j|s.qn|jddd}|j||d}|dkr~td||fny|j|}Wn'tk rtd||fnXi} x<|j|D]+} | |kr|j|| | | tparsert factory_keytsection_prefixt factoriestsectionR^t factory_spectfactorytextrasR@((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyt get_pluginsis(   cCs@tjjd|}t|dr/|jS|jtSdS(Nsx=tresolve(t pkg_resourcest EntryPointtparseR\RtloadtFalse(R>tspectep((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRs N(R$R%R7RNRJRLRyR5RtgidR8RIR)t schemadirRR?RutTrueRARER(RCR4RmRR{RRBRRR(((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyR&>s@       K N     t ServerOptionscBs]eZd8Zd8Zd8Zd8Zd8Zd8Zd8Z d8Z d8Z d9Z e ZejjZdZdZeddedZdZe dZdZdZdZd8d Zd8d Zd Zd Zd Z dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2d Z3d!Z4d"Z5d#Z6d$Z7d%Z8d&Z9d'Z:d(Z;d)Z<d*Z=d+Z>d,Z?d-Z@d.ZAd/ZBd0ZCd1ZDd2ZEd3ZFd4ZGe d5ZHd6ZId7ZJRS(:c Csztj|t|_t|j_|jdddd|j|jdddddddd |jd d d d |jddddtdd|jddddt |jddddt dd|jddddt ddM|jd"d#d$d%t dd&|jd'd(d)d*t dd+|jd,d-d.d/t dd0|jd1d2d3d4tdd5|jd6d7d8d9t dtj|jd:d;d<d=tdd!|jd>d?d@dAtddB|jdCdDdEdCdddd |jdFdGdHdFdddd |jdIdJd@dKtddi|_g|_g|_g|_t|_tj||_dS(NNR!tversiontnodaemonssupervisord.nodaemontnRTiRcituserssupervisord.usersu:suser=tumaskssupervisord.umasksm:sumask=t022t directoryssupervisord.directorysd:s directory=tlogfilessupervisord.logfilesl:slogfile=ssupervisord.logtlogfile_maxbytesssupervisord.logfile_maxbytessy:slogfile_maxbytes=i2itlogfile_backupsssupervisord.logfile_backupssz:slogfile_backups=i tloglevelssupervisord.loglevelse:s loglevel=tinfotpidfilessupervisord.pidfilesj:spidfile=ssupervisord.pidt identifierssupervisord.identifiersi:s identifier=t supervisort childlogdirssupervisord.childlogdirsq:s childlogdir=tminfdsssupervisord.minfdssa:sminfds=tminprocsssupervisord.minprocsRVs minprocs=it nocleanupssupervisord.nocleanupR@t strip_ansissupervisord.strip_ansittRssupervisord.profile_optionssprofile_options=ii (R&RAR#RRnR4R5RR RRRRRROttempfilet gettempdirtintRt pidhistorytprocess_group_configstparse_warningst parse_infostSignalReceivertsignal_receiverRtPoller(R>((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRAsT                    cCs%|jjdt|jddS(s-Print version to stdout and exit(0). s%s iN(RJRKtVERSIONRL(R>RM((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRsicCstj|||||||S(N(Rt getLogger(R>tfilenametleveltfmttrotatingtmaxbytestbackupsRJ((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRsc Ostj||||jj}|jdk ryt|j}Wn tk rc}|j|nX||_ t ||_ n|j s|j |_ n|j r|j }n |j }t||_ |jr|j}n |j}t||_|j|_d|_|j|_}xLg|D]} | dtjkr | ^q D]} | d} d| |_PqCW|jdkrxmg|D]} | dtjkr~| ^q~D]<} | d} | d} | sd} nd| | f|_qWn|j|_dS(Ntfamilytfiles unix://%sthosttportt localhosts http://%s:%s(R&RRRnRR5RRXRCRRRRRR"Rtrpcinterface_factoriest serverurltserver_configstsockettAF_UNIXtAF_INETR( R>RStkwRRRPRRtsconfigsRDRRR((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRsH           #  #   cCs/tj|d||jjj}||_dS(NR(R&R{RRnR(R>Rtnew((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyR{scsg|_g|_|jj}t|ds|j|sOtd|ny|j|d}Wqtt fk rtd|qXnt |j _ yj |Wn(tjk r}tt|nXtj}i|jd6|d6}|j|j jdrnjddsFtd njdd}t||d }|j}t|d rtjjtjj|j}nd }x|D]}tjj||}t j |} | s|jj!d |qnxdt"| D]V} |jj!d| yj#| Wq tjk rb}tt|q Xq WqWnj$} d| krtdni|jd6fd} t%| dd|_&t%| dd|_'| dd} | dkrd|_)nt*| |_)| dd|_+t,| dd|_-t.| dd|_/t0| dd|_1t%| dd|_2t3| d d!|_4t.| d"d#|_5| d$d%|_6t7| d&d'|_8t9j:}t*| d(||_;t7| d)d'|_<t7| d*d'|_=| d+d,}t||d+}t>||_?|j@d-d.|_A|jB|_CxM|jCD]B}x9|jDD].}|j?jE}|j|j?||_?qWqW|jF|_Gd|_H|S(/NRscould not find config file %sRscould not read config file %sR?thost_node_nametincludetfiless5.ini file has [include] section, but no files settings include.filesR^Rs No file matches via include "%s"s'Included extra file "%s" during parsingRns..ini file does not include supervisord sectioncs<|jdi}|j||d<j|||S(Nt expansions(Rhtupdatet getdefault(R}RctkwargsR(tcommon_expansionsR(s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRhMs  RiRiRRRRRssupervisord.logRt50MBRi RRRssupervisord.pidRRRtfalseRRRt environmentRVssupervisor.rpcinterface_factorys rpcinterface:(IRRRRnR\RBRXRtIOErrortOSErrortUnhosedConfigParserR;Rtreadfpt ConfigParsert ParsingErrorROtplatformtnodeR?Rt has_sectiont has_optionRhtexpandRRRR6RR^R9tglobR[tsortedRRRRRR5RRRR RRRRRRRRRRRRRRRRRR RRRtprocess_groups_from_parserRtprocess_configstcopytserver_configs_from_parserRR(R>tfpRtwhyRRRtbasetpatternt filenamesRRRhRttempdirt environ_strtgrouptprocRe((RRs6/usr/lib/python2.7/dist-packages/supervisor/options.pyRs         $     !       c! sg}j}g}i|jd6fd}x|D]}|jds\qAnt|jddd}t||dd}t||dd} g} xo|D]g} d | } | |krtd || fn|j | |j | |t } | j | qW|j t ||| | qAWx|D]}|jd  sG||kroqGnt|jddd}t||dd} |j ||t } |j t ||| | qGWx|D]}|jd sqn|jddd}t||dd } t||dd}||dd}y|j|}Wn'tk rtd||fnXgt||ddD]}|j^q}t|}|std|nd dlm}g}xR|D]J}t||d}|dkrBtd||fn|j |qWt||dd}|rtd|n|j ||t} |j t||| | |||qWx |D]}|jd s||krqnt|jddd}t||dd} i|d6}||dd}|dkr\d}n t|}||dd}|dk ryt|}Wqtk rtd|qXn||d d}|dk ryt|}Wqttfk rtd!|qXn||d"dd#|}|sItd$|ny|j||||}Wn/tk r} td%t| |fnX|j ||t} |j t||| | |qW|j |S(&NR?cs?|jdi}|j||d<j||||S(NR(RhRR(RR}RcRR(RR(s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRhs  sgroup:RQitprogramstpriorityis program:%ss[%s] names unknown program %ssprogram:seventlistener:it buffer_sizei tresult_handlers&supervisor.dispatchers:default_handlers!%s cannot be resolved within [%s]teventsRVs&[%s] section requires an "events" line(t EventTypess$Unknown event type %s in [%s] eventstredirect_stderrRsx[%s] section sets redirect_stderr=true but this is not allowed because it will interfere with the eventlistener protocols fcgi-program:t program_nameRt socket_ownersInvalid socket_owner value %st socket_modesInvalid socket_mode value %sRRs%[%s] section requires a "socket" lines%s in [%s] socket(!RR?RRRR R5RRXR[tprocesses_from_sectiont ProcessConfigtextendtProcessGroupConfigRRtuppertsettsupervisor.eventsR RvRtEventListenerConfigtEventListenerPoolConfigRRR t TypeErrortparse_fcgi_socketROtFastCGIProcessConfigtFastCGIGroupConfigtsort(!R>Rtgroupst all_sectionsthomogeneous_excludeRhRt group_nameRRtgroup_processestprogramtprogram_sectiont processesR t pool_nameRRtxtpool_event_namesR t pool_eventstpool_event_namet pool_eventR tfcgi_expansionst proc_usertproc_uidR R Rt socket_configte((RRs6/usr/lib/python2.7/dist-packages/supervisor/options.pyRs               .                    c CsC|jdr|d}tjj|s=td|nt|}|dkrtj}|dk r||kr|t|f}qn|dkrd}nt |d|d|S|dk s|dk rtddnt j d |}|r0|j d }t |j d } t|| Std |dS( Nsunix://is+Unix socket path %s is not an absolute pathitownerRs*socket_owner and socket_mode params shoulds' only be used with a Unix domain socketstcp://([^\s:]+):(\d+)$iisBad socket format %s(RRRtisabsRXR"R5RxRRtretmatchRRR( R>tsockR,R R RRtmRR((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRs.         cCsey|j||||SWnDtk r`}|jj||j}td|||fnXdS(Ns%s in section %r (file: %r)(t_processes_from_sectionRXtsection_to_fileRhR)(R>RRRtklassR.R((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyR4sc.;s|dkrt}ng}t|jddd}tj}i|jd6|d6|d6|d6fd}t||dd } t||d d } t ||d d } t||dd} t||dd} t ||dd}t||dd}t||dd}t||d|}t ||dd}t||dd}t||dd}t||dd}||ddd t }t ||d!d"}t||d#d}t ||d$d"}t||d%d}||d&d}|rc|jjd'krcd}n||d(d}|dkrd}n t|}||d)d}|dk rt|}nt||d*d+d t }|dkr d,|kr td-q n|r'| r'td.nxt|||D]} }!|!ji| d/6|!j|jtt||!d}"||d0d}#i}$xdDD]}%d3|%}&|||&t}'t|'trt|'|!|&}'nt|'}'|'|$|&|d?|$d?d!|d#|d@|$d@dA|$dAd8|$d8d$|d%|dB|$dBdC|$dCd|d|d|d|d|d|d|"d&|}-|j|-q;W|j|S(ENRQiR?R RRcs?|jdi}|j||d<j||||S(NR(RhRR(RR}RrRR(RR(s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRhJs  Rit autostartttruet autorestartt unexpectedt startsecst startretriesit stopsignaltTERMt stopwaitsecsi t stopasgroupRt killasgroupt exitcodess0,2R tnumprocstnumprocs_startiRRVt do_expandtstdout_capture_maxbytest0tstdout_events_enabledtstderr_capture_maxbyteststderr_events_enabledRtAUTORRt process_names%(program_name)ss%(process_num)sD%(process_num) must be present within process_name when numprocs > 1s1Cannot set stopasgroup=true and killasgroup=falset process_numRRJRNs %s_logfiles%s_logfile_backupss%s_logfile_maxbytesRstFor [%s], AUTO logging used for %s without rollover, set maxbytes > 0 to avoid filling up filesystem unintentionallytstderr_logfilespFor [%s], redirect_stderr=true but stderr_logfile has also been set to a filename, the filename has been ignoredtcommandRs-program section %s does not specify a commandR^Rtstdout_logfiletstdout_logfile_backupststdout_logfile_maxbyteststderr_logfile_backupststderr_logfile_maxbytes(RJRN(R5RRRRRR?RRRRR RRtstripRRR RXtrangeRR;R RRt isinstancet basestringR RR[R(.R>RRRR7RR RRhRR8R:R<R=R>R@RARBRCR RDREtenvironment_strtstdout_cmaxbytest stdout_eventststderr_cmaxbytest stderr_eventsRRRRRMRNRRRtlogfilesR@Rtlf_valtbu_keyRtmb_keyRRPtpconfig((RRs6/usr/lib/python2.7/dist-packages/supervisor/options.pyR5>s                                   cCs}g}xp|jD]b}|j|r|jdd}t|dkrY|d}nd}|j||fqqW|S(NRQi(RRRtlenR5R[(R>RtstypeRqRRR^((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyt_parse_servernamess cCs|j}||dd}||dd}|dk sE|dk rs|dks]|dkrstd|qsni|d6|d6S(NtusernametpasswordsSection [%s] contains incomplete authentication: If a username or a password is specified, both the username and password must be specified(RR5RX(R>RRRhRgRh((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyt_parse_username_and_passwords c Csg}|j|d}x|D]\}}i}|j}|j|j||||dRtconfigstinet_serverdefsR^RRDRhRRtunix_serverdefstsfileRlRm((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRs^        "          cCs(|jj|j|jjdS(N(Rtbefore_daemonizet _daemonizetafter_daemonize(R>((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyt daemonize#s  cCsTtj}|dkr8|jjdtjdn|jjd|jrytj|jWn0tk r}|jj d|j|fqX|jjd|jntj dt d|_ t _ t _tj dt dd|_t _t _tj d t dd|_t _t _tjtj|jdS( Nis"supervisord forked; parent exitings#daemonizing the supervisord processscan't chdir into %r: %ssset current directory: %rs /dev/nullitwi(Rtforktloggertblathert_exitRRtchdirRtcriticaltcloseRtstdinR7t __stdin__RJt __stdout__RNt __stderr__tsetsidR(R>tpidterr((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRs(s*           cCstj}y1t|jd}|jd||jWn.ttfk rm|jj d|jnX|jj d|dS(NRvs%s scould not write pidfile %sssupervisord started with pid %s( RtgetpidRRRKR}RRRxR|R(R>Rtf((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyt write_pidfile\s cCsgxP|jD]E\}}|dtjkr |jrO|d}|j|qOq q W|j|jdS(NRR(t httpserversRRtunlink_socketfilest _try_unlinkR(R>RDtservert socketname((s6/usr/lib/python2.7/dist-packages/supervisor/options.pytcleanupgs   cCs)ytj|Wntk r$nXdS(N(RtunlinkR(R>R((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRos cCsg}xl|jD]a\}}|jxH|jjD]4}t|dd}||kr9|j|q9q9WqWx|D]}|jq|WdS(NR(RR}tget_socket_maptvaluesRvR5R[(R>tdispatcher_serversRDRt dispatchertdispatcher_server((s6/usr/lib/python2.7/dist-packages/supervisor/options.pytclose_httpserversus   cCs|jjdS(N(RxR}(R>((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyt close_loggerscCs|jj}tjtj|tjtj|tjtj|tjtj|tjtj|tjtj|dS(N( RtreceivetsignaltSIGTERMtSIGINTtSIGQUITtSIGHUPtSIGCHLDtSIGUSR2(R>R((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyt setsignalss cCs |jjS(N(Rt get_signal(R>((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRscCsy|j||_Wntjk r}|jdtjkrQ|jdnmd}tjj |jd}|dkr|jd||jdfn!|jd|||jdft |_ n't k r}|j|jdnXdS(NisAnother program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord.s1Cannot open an HTTP server: socket.error reporteds%s %ss%s errno.%s (%d)(tmake_http_serversRRRtRrterrnot EADDRINUSERCt errorcodeRhR5RRRX(R>RnRR(t errorname((s6/usr/lib/python2.7/dist-packages/supervisor/options.pytopenhttpserverss !  cCs8d|||f}|jddd|d|j}|S(Ns %s-%s---%s-tsuffixs.logtprefixtdir(t mktempfileR(R>R^RtchannelRR((s6/usr/lib/python2.7/dist-packages/supervisor/options.pytget_autochildlog_names   cCs|j}tjd|j}ytj|}Wn(ttfk r\|jj ddSXxt|D]l}|j |rdtj j ||}y|j |Wqttfk r|jj d|qXqdqdWdS(Ns.+?---%s-\S+\.log\.{0,1}\d{0,4}sCould not clear childlog dirsFailed to clean up %r(RR1tcompileRRtlistdirRRRxRzR2RR9tremove(R>RtfnreRRtpathname((s6/usr/lib/python2.7/dist-packages/supervisor/options.pytclear_autochildlogdirs  cCstjS(N(tasyncoret socket_map(R>((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRscCsLd}x?t||jD]+}ytj|Wqtk rCqXqWdS(Ni(RWRRR}R(R>tstartR%((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyt cleanup_fdss  cCstj||dS(N(Rtkill(R>RR((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRscCsV|jdkr)tjdkr%dSdS|j|j}|dkrRd|jS|S(Nis3Supervisor running as root (no user in config file)sSet uid to user %s(RR5RRxtdropPrivileges(R>RP((s6/usr/lib/python2.7/dist-packages/supervisor/options.pytset_uids  cCs|dkrdSyt|}WnGtk riytj|}Wntk r[d|SX|d}n-Xytj|}Wntk rd|SXtj}||krdS|dkrdS|d}t tdrQ|d}gt j D] }||dkr|d^q}|j d|ytj |WqQtk rMd SXnytj|Wntk rvd SXtj|dS( NsNo user specified to setuid to!sCan't find username %risCan't find uid %ris$Can't drop privilege as nonroot userit setgroupss&Could not set groups of effective users(Could not set group id of effective user(R5RRXtpwdtgetpwnamtKeyErrortgetpwuidRRxR\tgrptgetgralltinsertRRtsetgidtsetuid(R>RRtpwrect current_uidRtgrprecR((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRsD             cCsytjdtj\}}Wnytk r}|jd}|tjtjfkri|jj dn|tjkr|jj dnd\}}nX||fS(Niis7waitpid error; a process may not be cleaned up properlysEINTR during reap(NN( RtwaitpidtWNOHANGRRrRtECHILDtEINTRRxR|RyR5(R>RtstsRR((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRs    c Csg}ttdrG|jidd6|jd6tjd6dd6nttdr|jidd6|jd6tjd6dd6ng}x|D]}|d}|d}|d}|d}|}tj|\}} ||kr|d kr| |kr| d kr|} ny.tj||| f|jd t Wqytj t fk ru|j |t qyXqqW|S( Nt RLIMIT_NOFILEsThe minimum number of file descriptors required to run this process is %(min)s as per the "minfds" command-line argument or config file setting. The current environment will only allow you to open %(hard)s file descriptors. Either raise the number of usable file descriptors in your environment (see README.rst) or lower the minfds setting in the config file to allow the process to start.RPtmintresourceR^t RLIMIT_NPROCsThe minimum number of available processes required to run this program is %(min)s as per the "minprocs" command-line argument or config file setting. The current environment will only allow you to open %(hard)s processes. Either raise the number of usable processes in your environment (see README.rst) or lower the minprocs setting in the config file to allow the program to start.is#Increased %(name)s limit to %(min)s( R\RR[RRRRt getrlimitt setrlimittlocalsRtRXRC( R>tlimitstmsgstlimitRtresRPR^tsoftthard((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyt set_rlimits/sB           c Csd}tj|j|j|dtd|jd|jd|j|_x|D]}|jj |qLWx|D]}|jj |qmWx|D]}|jj |qWdS(Ns&%(asctime)s %(levelname)s %(message)s RRRRJ( RRRRRRRRRxR|RzR(R>tcritical_messagest warn_messagest info_messagestformatRP((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyt make_loggerls     cCsddlm}|||S(Ni(R(tsupervisor.httpR(R>RnR((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRscCs)ytj|Wntk r$nXdS(N(RR}R(R>tfd((s6/usr/lib/python2.7/dist-packages/supervisor/options.pytclose_fds cCs tjS(N(RRw(R>((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRwscCstj||S(N(Rtdup2(R>tfrmtto((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRscCs tjS(N(Rtsetpgrp(R>((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRscCs tj|S(N(Rtstat(R>R((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRscCstj||S(N(RRK(R>Rtdata((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRKscCstj|||S(N(Rtexecve(R>RR8Re((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRscCs5dt_tj|||\}}tj||S(N(R5Rt _urandomfdRtmkstempR}(R>RRRRR((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRs  cCstj|dS(N(RR(R>R((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRscCstj|dS(N(RRz(R>tcode((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRzscCstj|dS(N(RR(R>tmask((s6/usr/lib/python2.7/dist-packages/supervisor/options.pytsetumaskscCsPdddg}tjjdrLtjd}|rL|jtj}qLn|S(s3Return a list corresponding to $PATH, or a default.s/bins/usr/bins/usr/local/bintPATH(RR<RZRtpathsep(R>Rtp((s6/usr/lib/python2.7/dist-packages/supervisor/options.pytget_paths  cCs tjS(N(RR(R>((s6/usr/lib/python2.7/dist-packages/supervisor/options.pytget_pidscCs|dkrtd|n~tj|tjrHtd|nUtj|tjd@sutd|n(tj|tj st d|ndS(Nscan't find command %rscommand at %r is a directoryiIscommand at %r is not executablesno permission to run command %r( R5tNotFoundRtS_ISDIRtST_MODEt NotExecutabletS_IMODERtaccesstX_OKt NoPermission(R>RR8tst((s6/usr/lib/python2.7/dist-packages/supervisor/options.pytcheck_execv_argss cCsG|jjdx0|jjD]"}t|dr|jqqWdS(Nssupervisord logreopentreopen(RxRthandlersR\R(R>Rb((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyt reopenlogsscCsaytj|d}WnDtk r\}|jdtjtjtjfkrSnd}nX|S(NiiiRVi(RRRRrRt EWOULDBLOCKtEBADFR(R>RRR((s6/usr/lib/python2.7/dist-packages/supervisor/options.pytreadfds% cCstjj|jpidS(N(RR<RR(R>((s6/usr/lib/python2.7/dist-packages/supervisor/options.pytprocess_environmentscCstj|dS(N(RR{(R>R((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyR{sc Cskidd6dd6dd6dd6dd6dd6}ytj\}}|||d<|dRNtpipesR~RRJRRRtflags((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyt make_pipess0  "   cCs@x9dD]1}|j|}|dk r|j|qqWdS(NR~RJRN(R~RJRN(RhR5R(R>R tfdnameR((s6/usr/lib/python2.7/dist-packages/supervisor/options.pytclose_parent_pipess  cCs@x9dD]1}|j|}|dk r|j|qqWdS(NRRR(RRR(RhR5R(R>R RR((s6/usr/lib/python2.7/dist-packages/supervisor/options.pytclose_child_pipess  N((KR$R%R5Rt sockchownt sockchmodRRRt passwdfileRRRRRRtSupervisorStatestRUNNINGtmoodRARRRRR{RRRRR5RfRiRRuRsRRRRRRRRRRRRRRRRRRRRRwRRRRKRRRRzRRRRRRRR{R RR(((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRs  -  <  j ! 5  4           6  =                  t ClientOptionscBsVeZdZdZdZdZdZdZdZ dZ dZ dZ dZ RS(ic CsPtj|dtt|_t|j_d|jj_d|jj_d|jj_ d|jj_ d|jj_ d|jj_ ddl m}d|if}|g|_|jddddd d dd |jd d dd|jddddtdd|jdddd|jdddd|jdddddS(NR3Ri(tDefaultControllerPluginRct interactivessupervisorctl.interactivetiRTiitpromptssupervisorctl.promptRssupervisorctl.serverurlss:s serverurl=shttp://localhost:9001Rgssupervisorctl.usernamesu:s username=Rhssupervisorctl.passwordsp:s password=thistoryssupervisorctl.history_filesr:s history_file=(R&RARR#Rt supervisorctlR5RRRRgRht history_filetsupervisor.supervisorctlRtplugin_factoriesR4R(R>Rtdefault_factory((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRAs(   cOs,tj||||js(d|_ndS(Ni(R&RRrR(R>RSR((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyR*s cCs |jj}t|dstjjt||_|j|sXt d|ny|j |d}Wqt t fk rt d|qXnt }|j|_d|_|j||j}d|krt dn|jddd i|jd 6}|jd r;t|d }d |}n||_|jd|j|_|jd|j|_|jd|j|_|jd|jd i|jd 6}|rt|}||_||_nd|_d|_|j|j|dd7_|S(NRscould not find config file %sRscould not read config file %sRs0.ini file does not include supervisorctl sectionRshttp://localhost:9001RR?sunix://is unix://%sRRgRhRssupervisor.ctl_factorys ctlplugin:(RRR\RRR6R"R?RBRXRRRRR;Rt mysectionRRRRRRRgRhRR5R R(R>RRRRRRR((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyR/sL                cCs+tjddtj|j|j|jS(Nshttp://127.0.0.1t transport(t xmlrpclibt ServerProxyRtSupervisorTransportRgRhR(R>((s6/usr/lib/python2.7/dist-packages/supervisor/options.pytgetServerProxy_s  N(R$R%RuR5RRRRgRhRRARRR'(((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRs   0RcBsJeZdZdZdZdZeeidZeidZ RS(RncOs,tjj|||i|_i|_dS(N(RtRawConfigParserRAR6R(R>RrR((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRAps cCs)ddlm}||}|j|S(Ni(tStringIO(R)R(R>tsR)((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyt read_stringus cKst|tr|g}ng}xv|D]n}|jj}|jtjj||g|t|jt|}x|D]}||j |RRt ok_filenamesRt sections_origtdiffR((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRzs   cCsy|j||}Wn,tjk rD|tkr;qE|}nX|rt|trtt|jj t|j }t ||d||f}n|S(Ns%s.%s( RhRt NoOptionErrort_markerRXRYtdicttlistRR=R(R>RtoptionRcRFRtoptvaltcombined_expansions((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRs  ( cKs"|j|j|d|d||S(NRcR(RR"(R>R5RcRR((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRs( R$R%R"RAR+RR2RRR(((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRms    tConfigcBs>eZdZdZdZdZdZdZRS(cCs|j| S(N(t__eq__(R>tother((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyt__ne__scCs2|j|jkr"|j|jkS|j|jkS(N(RR^(R>R:((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyt__lt__scCs2|j|jkr"|j|jkS|j|jkS(N(RR^(R>R:((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyt__le__scCs2|j|jkr"|j|jkS|j|jkS(N(RR^(R>R:((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyt__gt__scCs2|j|jkr"|j|jkS|j|jkS(N(RR^(R>R:((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyt__ge__scCsd|jt||jfS(Ns<%s instance at %s named %s>(t __class__tidR^(R>((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyt__repr__s(R$R%R;R<R=R>R?RB(((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyR8s      RcBseZdddddddddd d d d d ddddddddddddgZddgZdZdZdZd!dZd Z RS("R^RRPRRRR8R:R<R=RQRGRIRRRSRORJRTRURKR>R@RARBRCR RRcKse||_x%|jD]}t||||qWx-|jD]"}t|||j|dq;WdS(N(Rqtreq_param_namesR]toptional_param_namesRhR5(R>RqtparamsR^((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRAs  cCs~t|tstSxd|j|jD]R}tt||t||gkrTq$nt||t||kr$tSq$WtS(N(RXRRRCRDRRvR(R>R:R^((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyR9s$cCss|jj}|jj}|j}|jtkrH|||d|_n|jtkro|||d|_ndS(NRJRN(RqRRR^RQRRO(R>t get_autonametsidR^((s6/usr/lib/python2.7/dist-packages/supervisor/options.pytcreate_autochildlogss   cCs)ddlm}||}||_|S(Ni(t Subprocess(tsupervisor.processRIR(R>RRItprocess((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyt make_processs  c Cs|j }|jj|}|d|d|d}}}i}ddlm}ddlm} ddlm} |dk r| j } ||| |||Rt use_stderrRt stdout_fdt stderr_fdtstdin_fdt dispatchersRMRNRtetype((s6/usr/lib/python2.7/dist-packages/supervisor/options.pytmake_dispatcherss        N( R$R%RCRDRAR9RHR5RLRX(((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRs       RcBseZdZRS(c Cst}|jj|}|d|d|d}}}i}ddlm}ddlm} ddlm} ddlm} |dk r||d|||RRRRRSRTRURVRYRNRMRRW((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRX s"      (R$R%RX(((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyR sRcBseZddZdZRS(cCsD|dkrtdnddlm}||}||_|S(Ns FastCGI programs require a groupi(tFastCGISubprocess(R5tNotImplementedErrorRJRZR(R>RRZRK((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRL"s    cCsItj||\}}|d}|dk r?||jn||fS(NR~(RRXR5R}(R>RRVRRU((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRX*s   N(R$R%R5RLRX(((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyR s RcBs,eZdZdZdZdZRS(cCs(||_||_||_||_dS(N(RqR^RR(R>RqR^RR((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRA5s   cCsYt|tstS|j|jkr)tS|j|jkr?tS|j|jkrUtStS(N(RXRRR^RRR(R>R:((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyR9;scCs"x|jD]}|jq WdS(N(RRH(R>RD((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyt after_setuidHscCsddlm}||S(Ni(t ProcessGroup(RJR](R>R]((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyt make_groupLs(R$R%RAR9R\R^(((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyR4s  RcBs,eZdZdZdZdZRS(cCsC||_||_||_||_||_||_||_dS(N(RqR^RRRR'R(R>RqR^RRRR'R((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRAQs      cCs?t|tstS|j|jkr;|j|jkr;tStS(N(RXRRR^RR(R>R:((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyR9[s $cCs"x|jD]}|jq WdS(N(RRH(R>RD((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyR\dscCsddlm}||S(Ni(tEventListenerPool(RJR_(R>R_((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyR^hs(R$R%RAR9R\R^(((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRPs RcBs#eZdZdZdZRS(cCs&tj|||||||_dS(N(RRAR-(R>RqR^RRR-((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRAmscCs9t|tstS|j|jkr)tStj||S(N(RXRRR-RR9(R>R:((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyR9ws cCsddlm}||S(Ni(tFastCGIProcessGroup(RJR`(R>R`((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyR^s(R$R%RAR9R^(((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRls c Cs7t|}t|}yt|d}||kr|rKtdn|jdd|j}t||}|dkrd}n|j||j|}na||krtdn|dkr|j||j}n|j|}|j|}Wn#ttfk r2tdnX|S(sJ Read length bytes from the file named by filename starting at offset trbt BAD_ARGUMENTSiitFAILED( tabsRRXtseekttellRRRR( Rtoffsettlengtht absoffsett abslengthRtsztposR((s6/usr/lib/python2.7/dist-packages/supervisor/options.pytreadFiles0          cCs$t}yt|d}|jdd|j}|||krWt}|d}n|||kr||dkrd}n||}n|dkrd}n|dkrd}n|dkrd}n|j||j|}|}|||gSWn!ttfk rd|tgSXdS(s Read length bytes from the file named by filename starting at offset, automatically increasing offset and setting overflow flag if log size has grown beyond (offset + length). If length bytes are not available, as many bytes as are available are returned. RaiiiRVN(RRReRfRRRR(RRgRhtoverflowRRkR((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyttailFiles0         cCstj|r6tj|d@}d|}||fStj|rtj|}dt|}ttdrtj|}n |d@}|r|d7}nd|fSd|}d|fSd S( s*Decode the status returned by wait() or waitpid(). Return a tuple (exitstatus, message) where exitstatus is the exit status, or -1 if the process was killed by a signal; and message is a message telling what happened. It is the caller's responsibility to display the message. isexit status %ssterminated by %st WCOREDUMPis (core dumped)is unknown termination cause 0x%04xN(Rt WIFEXITEDt WEXITSTATUSt WIFSIGNALEDtWTERMSIGtsignameR\Rp(RtesRPtsigtiscore((s6/usr/lib/python2.7/dist-packages/supervisor/options.pytdecode_wait_statuss      cCs-tdkrtntj|p,d|S(sReturn a symbolic name for a signal. Return "signal NNN" if there is no corresponding SIG name in the signal module. s signal %dN(t _signamesR5t_init_signamesRh(Rw((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRus  cCszi}xgtjjD]V\}}t|dd}|dkrFqn|dr|d r|||((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRAscCs&||jkr"|jj|ndS(N(RR[(R>Rwtframe((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRscCs(|jr|jjd}nd}|S(Ni(RtpopR5(R>Rw((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRs (R$R%RARR(((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRs  cCsy ||SWntk rh}t|j}|jtd||t|dj|fn2tk r}td||t|fnXdS(NsYFormat string %r for %r contains names (%s) which cannot be expanded. Available names: %ss, s.Format string %r for %r is badly formatted: %s(RR4RwRRXROR9t Exception(R*RR^text available((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRs  (cCs)||kr|}nd||f}|S(Ns%s:%s((RRMR^((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyt make_namespec!s  cCsf|jdd}t|dkrO|\}}| sC|dkr\d}q\n ||}}||fS(NRQiit*(RRdR5(tnamespectnamesRRM((s6/usr/lib/python2.7/dist-packages/supervisor/options.pytsplit_namespec+s   tProcessExceptioncBseZdZRS(s@ Specialized exceptions used when attempting to start a process (R$R%Rp(((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyR9st BadCommandcBseZdZRS(s5 Indicates the command could not be parsed properly. (R$R%Rp(((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyR<sRcBseZdZRS(s Indicates that the filespec cannot be executed because its path resolves to a file which is not executable, or which is a directory. (R$R%Rp(((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyR?sRcBseZdZRS(sR Indicates that the filespec cannot be executed because it could not be found (R$R%Rp(((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRCsRcBseZdZRS(s Indicates that the file cannot be executed because the supervisor process does not possess the appropriate UNIX filesystem permission to execute the file. (R$R%Rp(((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyRGs(_RRRsRR7RRRR1R$RRRRRRRRyRtsupervisor.medusaRRtsupervisor.datatypesRRRRRRRRR R R R R RRRRRRRRRRRRRRRRRR6t__file__tmydirR9t version_txtRRRVRR"R#R&RRR2R(RtobjectR8RRRRRRRmRoRyR5RzRuR{RRRRRRRRRR(((s6/usr/lib/python2.7/dist-packages/supervisor/options.pyts                    P}e: C " (