diff --git a/CHANGELOG.md b/CHANGELOG.md index ea2248e..db48106 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,15 +4,20 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] +## [4.0.0] - Unreleased ### Added - New `transpile` command to replace some functionality of devel server ### Changed - Major rewrite/refactor of `mothd` + - There are now providers for State, Puzzles, and Theme. Sqlite, Redis, or S3 should fit in easily. + - Server no longer provides unlocked content + - Puzzle URLs are now just `/content/${cat}/${points}/` - `state/until` is now `state/hours` and can specify multiple begin/end hours - `state/disabled` is now `state/enabled` - Mothball structure has changed substantially + - Mothballs no longer contain `map.txt` + - Clients now expect unlocked puzzles to just be `map[string][]int` ### Deprecated diff --git a/cmd/mothd/httpd.go b/cmd/mothd/httpd.go index 38e3d76..831905c 100644 --- a/cmd/mothd/httpd.go +++ b/cmd/mothd/httpd.go @@ -94,8 +94,11 @@ func (h *HTTPServer) StateHandler(w http.ResponseWriter, req *http.Request) { state.TeamNames = export.TeamNames state.PointsLog = export.PointsLog - // XXX: unstub this - state.Puzzles = map[string][]int{"sequence": {1}} + state.Puzzles = make(map[string][]int) + log.Println("Puzzles") + for category := range h.Puzzles.Inventory() { + log.Println(category) + } JSONWrite(w, state) } diff --git a/cmd/mothd/mothballs.go b/cmd/mothd/mothballs.go index 7af6ae3..eb9c3f3 100644 --- a/cmd/mothd/mothballs.go +++ b/cmd/mothd/mothballs.go @@ -30,6 +30,10 @@ func (m *Mothballs) Open(cat string, points int, filename string) (io.ReadCloser } func (m *Mothballs) Inventory() []Category { + for cat, zfs := range m.categories { + map, err := zfs.Open("map.txt") + log.Println("mothballs", cat, zfs) + } return []Category{} } diff --git a/devel/answer_words.txt b/devel/answer_words.txt new file mode 100644 index 0000000..7adc1a8 --- /dev/null +++ b/devel/answer_words.txt @@ -0,0 +1,7713 @@ +about +search +other +information +which +their +there +contact +business +online +first +would +services +these +click +service +price +people +state +email +health +world +products +music +should +product +system +policy +number +please +available +copyright +support +message +after +software +video +where +rights +public +books +school +through +links +review +years +order +privacy +items +company +group +under +general +research +university +january +reviews +program +games +management +could +great +united +hotel +international +center +store +travel +comments +development +report +member +details +terms +before +hotels +right +because +local +those +using +results +office +education +national +design +posted +internet +address +community +within +states +phone +shipping +reserved +subject +between +forum +family +based +black +check +special +prices +website +index +being +women +today +technology +south +project +pages +version +section +found +sports +house +related +security +county +american +photo +members +power +while +network +computer +systems +three +total +place +following +download +without +access +think +north +resources +current +posts +media +control +water +history +pictures +personal +since +including +guide +directory +board +location +change +white +small +rating +government +children +during +return +students +shopping +account +times +sites +level +digital +profile +previous +events +hours +image +department +title +description +insurance +another +shall +property +class +still +money +quality +every +listing +content +country +private +little +visit +tools +reply +customer +december +compare +movies +include +college +value +article +provide +source +author +different +press +learn +around +print +course +canada +process +stock +training +credit +point +science +categories +advanced +sales +english +estate +conditions +select +windows +photos +thread +category +large +gallery +table +register +however +october +november +market +library +really +action +start +series +model +features +industry +human +provided +required +second +accessories +movie +forums +march +september +better +questions +yahoo +going +medical +friend +server +study +application +staff +articles +feedback +again +looking +issues +april +never +users +complete +street +topic +comment +financial +things +working +against +standard +person +below +mobile +party +payment +equipment +login +student +programs +offers +legal +above +recent +stores +problem +memory +performance +social +august +quote +language +story +options +experience +rates +create +young +america +important +field +paper +single +activities +example +girls +additional +password +latest +something +question +changes +night +texas +poker +status +browse +issue +range +building +seller +court +february +always +result +audio +light +write +offer +groups +given +files +event +release +analysis +request +china +making +picture +needs +possible +might +professional +month +major +areas +future +space +committee +cards +problems +london +washington +meeting +become +interest +child +enter +california +share +similar +garden +schools +million +added +reference +companies +listed +learning +energy +delivery +popular +stories +computers +journal +reports +welcome +central +images +president +notice +original +radio +until +color +council +includes +track +australia +discussion +archive +others +entertainment +agreement +format +least +society +months +safety +friends +trade +edition +messages +marketing +further +updated +association +having +provides +david +already +green +studies +close +common +drive +specific +several +living +collection +called +short +display +limited +powered +solutions +means +director +daily +beach +natural +whether +electronics +period +planning +database +official +weather +average +technical +window +france +region +island +record +direct +microsoft +conference +environment +records +district +calendar +costs +style +front +statement +update +parts +downloads +early +miles +sound +resource +present +applications +either +document +works +material +written +federal +hosting +rules +final +adult +tickets +thing +centre +requirements +cheap +finance +minutes +third +gifts +europe +reading +topics +individual +cover +usually +together +videos +percent +function +getting +global +economic +player +projects +lyrics +often +subscribe +submit +germany +amount +watch +included +though +thanks +everything +deals +various +words +linux +production +commercial +james +weight +heart +advertising +received +choose +treatment +newsletter +archives +points +knowledge +magazine +error +camera +currently +construction +registered +clear +receive +domain +methods +chapter +makes +protection +policies +beauty +manager +india +position +taken +listings +models +michael +known +cases +engineering +florida +simple +quick +wireless +license +friday +whole +annual +published +later +basic +shows +corporate +google +church +method +purchase +customers +active +response +practice +hardware +figure +materials +holiday +enough +designed +along +among +death +writing +speed +countries +brand +discount +higher +effects +created +remember +standards +yellow +political +increase +advertise +kingdom +environmental +thought +stuff +french +storage +japan +doing +loans +shoes +entry +nature +orders +availability +africa +summary +growth +notes +agency +monday +european +activity +although +western +income +force +employment +overall +river +commission +package +contents +players +engine +album +regional +supplies +started +administration +institute +views +plans +double +build +screen +exchange +types +sponsored +lines +electronic +continue +across +benefits +needed +season +apply +someone +anything +printer +condition +effective +believe +organization +effect +asked +sunday +selection +casino +volume +cross +anyone +mortgage +silver +corporation +inside +solution +mature +rather +weeks +addition +supply +nothing +certain +executive +running +lower +necessary +union +jewelry +according +clothing +particular +names +robert +homepage +skills +islands +advice +career +military +rental +decision +leave +british +teens +woman +facilities +sellers +middle +cable +opportunities +taking +values +division +coming +tuesday +object +lesbian +appropriate +machine +length +actually +score +statistics +client +returns +capital +follow +sample +investment +shown +saturday +christmas +england +culture +flash +george +choice +starting +registration +thursday +courses +consumer +airport +foreign +artist +outside +furniture +levels +channel +letter +phones +ideas +wednesday +structure +summer +allow +degree +contract +button +releases +homes +super +matter +custom +virginia +almost +located +multiple +asian +distribution +editor +industrial +cause +potential +focus +featured +rooms +female +responsible +communications +associated +thomas +primary +cancer +numbers +reason +browser +spring +foundation +answer +voice +friendly +schedule +documents +communication +purpose +feature +comes +police +everyone +independent +approach +cameras +brown +physical +operating +medicine +ratings +chicago +forms +glass +happy +smith +wanted +developed +thank +unique +survey +prior +telephone +sport +ready +animal +sources +mexico +population +regular +secure +navigation +operations +therefore +simply +evidence +station +christian +round +paypal +favorite +understand +option +master +valley +recently +probably +rentals +built +publications +blood +worldwide +improve +connection +publisher +larger +networks +earth +parents +nokia +impact +transfer +introduction +kitchen +strong +carolina +wedding +properties +hospital +ground +overview +accommodation +owners +disease +excellent +italy +perfect +opportunity +classic +basis +command +cities +william +express +award +distance +peter +assessment +ensure +involved +extra +especially +interface +partners +budget +rated +guides +success +maximum +operation +existing +quite +selected +amazon +patients +restaurants +beautiful +warning +locations +horse +forward +flowers +stars +significant +lists +technologies +owner +retail +animals +useful +directly +manufacturer +providing +housing +takes +bring +catalog +searches +trying +mother +authority +considered +traffic +programme +joined +input +strategy +agent +valid +modern +senior +ireland +teaching +grand +testing +trial +charge +units +instead +canadian +normal +wrote +enterprise +ships +entire +educational +leading +metal +positive +fitness +chinese +opinion +football +abstract +output +funds +greater +likely +develop +employees +artists +alternative +processing +responsibility +resolution +guest +seems +publication +relations +trust +contains +session +multi +photography +republic +components +vacation +century +academic +assistance +completed +graphics +indian +expected +grade +dating +pacific +mountain +organizations +filter +mailing +vehicle +longer +consider +northern +behind +panel +floor +german +buying +match +proposed +default +require +outdoor +morning +otherwise +allows +protein +plant +reported +transportation +politics +partner +disclaimer +authors +boards +faculty +parties +membership +mission +string +sense +modified +released +stage +internal +goods +recommended +unless +richard +detailed +japanese +approved +background +target +except +character +maintenance +ability +maybe +functions +moving +brands +places +pretty +trademarks +phentermine +spain +southern +yourself +winter +battery +youth +pressure +submitted +boston +keywords +medium +television +interested +break +purposes +throughout +dance +itself +defined +papers +playing +awards +studio +reader +virtual +device +established +answers +remote +programming +external +apple +regarding +instructions +offered +theory +enjoy +remove +surface +minimum +visual +variety +teachers +martin +manual +block +subjects +agents +increased +repair +civil +steel +understanding +songs +fixed +wrong +beginning +hands +associates +finally +updates +desktop +classes +paris +sector +capacity +requires +jersey +fully +father +electric +instruments +quotes +officer +driver +businesses +respect +unknown +specified +restaurant +worth +procedures +teacher +relationship +workers +georgia +peace +traditional +campus +showing +creative +coast +benefit +progress +funding +devices +grant +agree +fiction +sometimes +watches +careers +beyond +families +museum +themselves +transport +interesting +blogs +evaluation +accepted +former +implementation +complex +galleries +references +presented +agencies +literature +respective +parent +spanish +michigan +columbia +setting +scale +stand +economy +highest +helpful +monthly +critical +frame +musical +definition +secretary +angeles +networking +australian +employee +chief +gives +bottom +magazines +packages +detail +francisco +changed +heard +begin +individuals +colorado +royal +clean +switch +russian +largest +african +titles +relevant +guidelines +justice +connect +bible +basket +applied +weekly +installation +described +demand +suite +vegas +square +chris +attention +advance +auction +difference +allowed +correct +charles +nation +selling +piece +sheet +seven +older +illinois +regulations +elements +species +cells +module +resort +facility +random +pricing +certificate +minister +motion +looks +fashion +directions +visitors +documentation +monitor +trading +forest +calls +whose +coverage +couple +giving +chance +vision +ending +clients +actions +listen +discuss +accept +automotive +naked +successful +communities +clinical +situation +sciences +markets +lowest +highly +publishing +appear +emergency +developing +lives +currency +leather +determine +temperature +announcements +patient +actual +historical +stone +commerce +ringtones +perhaps +persons +difficult +scientific +satellite +tests +village +accounts +amateur +particularly +factors +coffee +settings +buyer +cultural +steve +easily +poster +functional +closed +holidays +zealand +balance +monitoring +graduate +replies +architecture +initial +label +thinking +scott +recommend +canon +league +waste +minute +provider +optional +dictionary +accounting +manufacturing +sections +chair +fishing +effort +phase +fields +fantasy +letters +motor +professor +context +install +shirt +apparel +generally +continued +crime +count +breast +techniques +johnson +quickly +dollars +websites +religion +claim +driving +permission +surgery +patch +measures +generation +kansas +chemical +doctor +reduce +brought +himself +component +enable +exercise +santa +guarantee +leader +diamond +israel +processes +servers +alone +meetings +seconds +jones +arizona +keyword +interests +flight +congress +username +produced +italian +paperback +classifieds +supported +pocket +saint +freedom +argument +competition +creating +drugs +joint +premium +providers +fresh +characters +attorney +upgrade +factor +growing +thousands +stream +apartments +hearing +eastern +auctions +therapy +entries +dates +generated +signed +upper +administrative +serious +prime +samsung +limit +began +louis +steps +errors +shops +efforts +informed +thoughts +creek +worked +quantity +urban +practices +sorted +reporting +essential +myself +tours +platform +affiliate +labor +immediately +admin +nursing +defense +machines +designated +heavy +covered +recovery +integrated +configuration +merchant +comprehensive +expert +universal +protect +solid +presentation +languages +became +orange +compliance +vehicles +prevent +theme +campaign +marine +improvement +guitar +finding +pennsylvania +examples +saying +spirit +claims +challenge +motorola +acceptance +strategies +affairs +touch +intended +towards +goals +election +suggest +branch +charges +serve +affiliates +reasons +magic +mount +smart +talking +latin +multimedia +avoid +certified +manage +corner +computing +oregon +element +birth +virus +abuse +interactive +requests +separate +quarter +procedure +leadership +tables +define +racing +religious +facts +breakfast +column +plants +faith +chain +developer +identify +avenue +missing +approximately +domestic +sitemap +recommendations +moved +houston +reach +comparison +mental +viewed +moment +extended +sequence +attack +sorry +centers +opening +damage +reserve +recipes +gamma +plastic +produce +placed +truth +counter +failure +follows +weekend +dollar +ontario +automatically +minnesota +films +bridge +native +williams +movement +printing +baseball +owned +approval +draft +chart +played +contacts +jesus +readers +clubs +jackson +equal +adventure +matching +offering +shirts +profit +leaders +posters +institutions +assistant +variable +advertisement +expect +parking +headlines +yesterday +compared +determined +wholesale +workshop +russia +codes +kinds +extension +seattle +statements +golden +completely +teams +lighting +senate +forces +funny +brother +turned +portable +tried +electrical +applicable +returned +pattern +named +theatre +laser +earlier +manufacturers +sponsor +classical +warranty +dedicated +indiana +direction +harry +basketball +objects +delete +evening +assembly +nuclear +taxes +mouse +signal +criminal +issued +brain +sexual +wisconsin +powerful +dream +obtained +false +flower +personnel +passed +supplied +identified +falls +opinions +promote +stated +stats +hawaii +professionals +appears +carry +decided +covers +advantage +hello +designs +maintain +tourism +priority +newsletters +adults +clips +savings +graphic +payments +estimated +binding +brief +ended +winning +eight +anonymous +straight +script +served +wants +miscellaneous +prepared +dining +alert +integration +atlanta +dakota +interview +framework +installed +queen +credits +clearly +handle +sweet +criteria +pubmed +massachusetts +diego +associate +truck +behavior +enlarge +frequently +revenue +measure +changing +votes +looked +discussions +festival +laboratory +ocean +flights +experts +signs +depth +whatever +logged +laptop +vintage +train +exactly +explore +maryland +concept +nearly +eligible +checkout +reality +forgot +handling +origin +gaming +feeds +billion +destination +scotland +faster +intelligence +dallas +bought +nations +route +followed +specifications +broken +tripadvisor +frank +alaska +battle +residential +anime +speak +decisions +industries +protocol +query +partnership +editorial +expression +equity +provisions +speech +principles +suggestions +rural +shared +sounds +replacement +strategic +judge +economics +bytes +forced +compatible +fight +apartment +height +speaker +filed +netherlands +obtain +consulting +recreation +offices +designer +remain +managed +failed +marriage +korea +banks +participants +secret +kelly +leads +negative +austin +favorites +toronto +theater +springs +missouri +andrew +perform +healthy +translation +estimates +assets +injury +joseph +ministry +drivers +lawyer +figures +married +protected +proposal +sharing +philadelphia +portal +waiting +birthday +gratis +banking +officials +brian +toward +slightly +assist +conduct +contained +lingerie +legislation +calling +parameters +serving +profiles +miami +comics +matters +houses +postal +relationships +tennessee +controls +breaking +combined +ultimate +wales +representative +frequency +introduced +minor +finish +departments +residents +noted +displayed +reduced +physics +spent +performed +extreme +samples +davis +daniel +reviewed +forecast +removed +helps +singles +administrator +cycle +amounts +contain +accuracy +sleep +pharmacy +brazil +creation +static +scene +hunter +addresses +crystal +famous +writer +chairman +violence +oklahoma +speakers +drink +academy +dynamic +gender +permanent +agriculture +cleaning +constitutes +portfolio +practical +delivered +collectibles +infrastructure +exclusive +concerns +colour +vendor +originally +intel +utilities +philosophy +regulation +officers +reduction +referred +supports +nutrition +recording +regions +junior +rings +meaning +secondary +wonderful +ladies +henry +ticket +announced +guess +agreed +prevention +soccer +import +posting +presence +instant +mentioned +automatic +healthcare +viewing +maintained +increasing +majority +connected +christ +directors +aspects +austria +ahead +participation +scheme +utility +preview +manner +matrix +containing +combination +devel +amendment +despite +strength +guaranteed +turkey +libraries +proper +distributed +degrees +singapore +enterprises +delta +seeking +inches +phoenix +convention +shares +principal +daughter +standing +comfort +colors +cisco +ordering +alpha +appeal +cruise +bonus +certification +previously +bookmark +buildings +specials +disney +household +batteries +adobe +smoking +becomes +drives +alabama +improved +trees +achieve +positions +dress +subscription +dealer +contemporary +nearby +carried +happen +exposure +panasonic +permalink +signature +gambling +refer +miller +provision +outdoors +clothes +caused +luxury +babes +frames +certainly +indeed +newspaper +circuit +layer +printed +removal +easier +liability +trademark +printers +adding +kentucky +mostly +taylor +trackback +prints +spend +factory +interior +revised +americans +optical +promotion +relative +amazing +clock +identity +suites +conversion +feeling +hidden +reasonable +victoria +serial +relief +revision +broadband +influence +ratio +importance +planet +webmaster +copies +recipe +permit +seeing +proof +tennis +prescription +bedroom +empty +instance +licensed +orlando +specifically +bureau +maine +represent +conservation +ideal +specs +recorded +pieces +finished +parks +dinner +lawyers +sydney +stress +cream +trends +discover +patterns +boxes +louisiana +hills +javascript +fourth +advisor +marketplace +aware +wilson +shape +evolution +irish +certificates +objectives +stations +suggested +remains +greatest +firms +concerned +operator +structures +generic +encyclopedia +usage +charts +continuing +mixed +census +interracial +competitive +exist +wheel +transit +suppliers +compact +poetry +lights +tracking +angel +keeping +preparation +attempt +receiving +matches +accordance +width +noise +engines +forget +array +discussed +accurate +stephen +elizabeth +climate +reservations +playstation +alcohol +greek +instruction +managing +annotation +sister +differences +walking +explain +smaller +newest +establish +happened +expressed +extent +sharp +lesbians +paragraph +mathematics +compensation +export +managers +aircraft +modules +sweden +conflict +conducted +versions +employer +occur +percentage +knows +mississippi +describe +concern +backup +requested +citizens +connecticut +heritage +personals +immediate +holding +trouble +spread +coach +kevin +agricultural +expand +supporting +audience +assigned +jordan +collections +participate +specialist +affect +virgin +experienced +investigation +raised +institution +directed +dealers +searching +sporting +helping +affected +totally +plate +expenses +indicate +blonde +proceedings +favourite +transmission +anderson +characteristics +organic +experiences +albums +cheats +extremely +verzeichnis +contracts +guests +hosted +diseases +concerning +developers +equivalent +chemistry +neighborhood +nevada +thailand +variables +agenda +anyway +continues +tracks +advisory +curriculum +logic +template +prince +circle +grants +anywhere +psychology +responses +atlantic +circumstances +edward +investor +identification +leaving +wildlife +appliances +elementary +cooking +speaking +sponsors +unlimited +respond +sizes +plain +entered +launch +checking +costa +belgium +printable +guidance +trail +enforcement +symbol +crafts +highway +buddy +hardcover +observed +setup +booking +glossary +fiscal +celebrity +styles +denver +filled +channels +ericsson +appendix +notify +blues +chocolate +portion +scope +hampshire +supplier +cables +cotton +bluetooth +controlled +requirement +authorities +biology +dental +killed +border +ancient +debate +representatives +starts +pregnancy +causes +arkansas +biography +leisure +attractions +learned +transactions +notebook +explorer +historic +attached +opened +husband +disabled +authorized +crazy +upcoming +britain +concert +retirement +scores +financing +efficiency +comedy +adopted +efficient +weblog +linear +commitment +specialty +bears +carrier +edited +constant +mouth +jewish +meter +linked +portland +interviews +concepts +reflect +deliver +wonder +lessons +fruit +begins +qualified +reform +alerts +treated +discovery +mysql +classified +relating +assume +confidence +alliance +confirm +neither +lewis +howard +offline +leaves +engineer +lifestyle +consistent +replace +clearance +connections +inventory +converter +organisation +checks +reached +becoming +safari +objective +indicated +sugar +stick +securities +allen +relation +enabled +genre +slide +montana +volunteer +tested +democratic +enhance +switzerland +exact +bound +parameter +adapter +processor +formal +dimensions +contribute +hockey +storm +micro +colleges +laptops +showed +challenges +editors +threads +supreme +brothers +recognition +presents +submission +dolls +estimate +encourage +regulatory +inspection +consumers +cancel +limits +territory +transaction +manchester +weapons +paint +delay +pilot +outlet +contributions +continuous +czech +resulting +cambridge +initiative +novel +execution +disability +increases +ultra +winner +idaho +contractor +episode +examination +potter +plays +bulletin +indicates +modify +oxford +truly +epinions +painting +committed +extensive +affordable +universe +candidate +databases +patent +outstanding +eating +perspective +planned +watching +lodge +messenger +mirror +tournament +consideration +discounts +sterling +sessions +kernel +stocks +buyers +journals +catalogue +jennifer +antonio +charged +broad +taiwan +chosen +greece +swiss +sarah +clark +labour +terminal +publishers +nights +behalf +caribbean +liquid +nebraska +salary +reservation +foods +gourmet +guard +properly +orleans +saving +remaining +empire +resume +twenty +newly +raise +prepare +avatar +depending +illegal +expansion +hundreds +lincoln +helped +premier +tomorrow +purchased +decide +consent +drama +visiting +performing +downtown +keyboard +contest +collected +bands +suitable +absolutely +millions +lunch +audit +chamber +guinea +findings +muscle +featuring +implement +clicking +scheduled +polls +typical +tower +yours +calculator +significantly +chicken +temporary +attend +shower +sending +jason +tonight +sufficient +holdem +shell +province +catholic +awareness +vancouver +governor +seemed +contribution +measurement +swimming +spyware +formula +constitution +packaging +solar +catch +pakistan +reliable +consultation +northwest +doubt +finder +unable +periods +classroom +tasks +democracy +attacks +wallpaper +merchandise +const +resistance +doors +symptoms +resorts +biggest +memorial +visitor +forth +insert +baltimore +gateway +alumni +drawing +candidates +charlotte +ordered +biological +fighting +transition +happens +preferences +romance +instrument +bruce +split +themes +powers +heaven +pregnant +twice +classification +focused +egypt +physician +hollywood +bargain +wikipedia +cellular +norway +vermont +asking +blocks +normally +spiritual +hunting +diabetes +shift +bodies +photographs +cutting +simon +writers +marks +flexible +loved +favourites +mapping +numerous +relatively +birds +satisfaction +represents +indexed +pittsburgh +superior +preferred +saved +paying +cartoon +shots +intellectual +moore +granted +choices +carbon +spending +comfortable +magnetic +interaction +listening +effectively +registry +crisis +outlook +massive +denmark +employed +bright +treat +header +poverty +formed +piano +sheets +patrick +experimental +puerto +revolution +consolidation +displays +plasma +allowing +earnings +mystery +landscape +dependent +mechanical +journey +delaware +bidding +consultants +risks +banner +applicant +charter +barbara +cooperation +counties +acquisition +ports +implemented +directories +recognized +dreams +blogger +notification +licensing +stands +teach +occurred +textbooks +rapid +hairy +diversity +cleveland +reverse +deposit +seminar +investments +latina +wheels +specify +accessibility +dutch +sensitive +templates +formats +depends +boots +holds +router +concrete +editing +poland +folder +womens +completion +upload +pulse +universities +technique +contractors +voting +courts +notices +subscriptions +calculate +detroit +alexander +broadcast +converted +metro +toshiba +anniversary +improvements +strip +specification +pearl +accident +accessible +accessory +resident +possibly +airline +typically +representation +regard +exists +arrangements +smooth +conferences +uniprotkb +strike +consumption +birmingham +flashing +narrow +afternoon +threat +surveys +sitting +putting +consultant +controller +ownership +committees +legislative +researchers +vietnam +trailer +castle +gardens +missed +malaysia +unsubscribe +antique +labels +willing +molecular +acting +heads +stored +logos +residence +attorneys +antiques +density +hundred +operators +strange +sustainable +philippines +statistical +mention +innovation +employers +parallel +honda +amended +operate +bills +bathroom +stable +opera +definitions +doctors +lesson +cinema +asset +elections +drinking +reaction +blank +enhanced +entitled +severe +generate +stainless +newspapers +hospitals +deluxe +humor +monitors +exception +lived +duration +successfully +indonesia +pursuant +fabric +visits +primarily +tight +domains +capabilities +contrast +recommendation +flying +recruitment +berlin +organized +siemens +adoption +improving +expensive +meant +capture +pounds +buffalo +organisations +plane +explained +programmes +desire +expertise +mechanism +camping +jewellery +meets +welfare +caught +eventually +marked +driven +measured +medline +bottle +agreements +considering +innovative +marshall +massage +rubber +conclusion +closing +tampa +thousand +legend +grace +susan +adams +python +monster +villa +columns +disorders +collaboration +hamilton +detection +cookies +inner +formation +tutorial +engineers +entity +cruises +holder +proposals +moderator +tutorials +settlement +portugal +lawrence +roman +duties +valuable +collectables +ethics +forever +dragon +captain +fantastic +imagine +brings +heating +governments +purchasing +scripts +stereo +appointed +taste +dealing +commit +operational +airlines +liberal +livecam +trips +sides +turns +corresponding +descriptions +cache +jacket +determination +animation +oracle +matthew +lease +productions +aviation +hobbies +proud +excess +disaster +console +commands +telecommunications +instructor +giant +achieved +injuries +shipped +seats +approaches +alarm +voltage +anthony +nintendo +usual +loading +stamps +appeared +franklin +angle +vinyl +highlights +mining +designers +melbourne +ongoing +worst +imaging +betting +scientists +liberty +wyoming +blackjack +argentina +convert +possibility +analyst +commissioner +dangerous +garage +exciting +reliability +thongs +unfortunately +respectively +volunteers +attachment +ringtone +finland +morgan +derived +pleasure +honor +oriented +eagle +desktops +pants +columbus +nurse +prayer +appointment +workshops +hurricane +quiet +postage +producer +represented +mortgages +responsibilities +cheese +comic +carefully +productivity +investors +crown +underground +diagnosis +maker +crack +principle +picks +vacations +semester +calculated +fetish +applies +casinos +appearance +smoke +apache +filters +incorporated +craft +notebooks +apart +fellow +blind +lounge +algorithm +coins +gross +strongly +valentine +hilton +proteins +horror +familiar +capable +douglas +debian +involving +investing +christopher +admission +epson +elected +carrying +victory +madison +terrorism +editions +mainly +ethnic +parliament +actor +finds +situations +fifth +allocated +citizen +vertical +corrections +structural +municipal +describes +prize +occurs +absolute +disabilities +consists +anytime +substance +prohibited +addressed +soldiers +guardian +lecture +simulation +layout +initiatives +concentration +classics +interpretation +horses +dirty +wayne +donate +taught +bankruptcy +worker +optimization +alive +temple +substances +prove +discovered +wings +breaks +genetic +restrictions +participating +waters +promise +exhibition +prefer +ridge +cabinet +modem +harris +bringing +evaluate +tiffany +tropical +collect +composition +toyota +streets +nationwide +vector +definitely +shaved +turning +buffer +purple +existence +commentary +larry +limousines +developments +immigration +destinations +mutual +pipeline +necessarily +syntax +attribute +prison +skill +chairs +everyday +apparently +surrounding +mountains +moves +popularity +inquiry +ethernet +checked +exhibit +throw +trend +sierra +visible +desert +postposted +oldest +rhode +coordinator +obviously +mercury +steven +handbook +navigate +worse +summit +victims +spaces +fundamental +burning +escape +coupons +somewhat +receiver +substantial +progressive +cialis +boats +glance +scottish +championship +arcade +richmond +sacramento +impossible +russell +tells +obvious +fiber +depression +graph +covering +platinum +judgment +bedrooms +talks +filing +foster +modeling +passing +awarded +testimonials +trials +tissue +memorabilia +clinton +masters +bonds +cartridge +alberta +explanation +commons +cincinnati +subsection +fraud +electricity +permitted +spectrum +arrival +pottery +emphasis +roger +aspect +workplace +awesome +mexican +confirmed +counts +priced +wallpapers +crash +desired +inter +closer +assumes +heights +shadow +riding +infection +firefox +expense +grove +eligibility +venture +clinic +korean +healing +princess +entering +packet +spray +studios +involvement +buttons +placement +observations +vbulletin +funded +thompson +winners +extend +roads +subsequent +dublin +rolling +motorcycle +disclosure +establishment +memories +nelson +arrived +creates +faces +tourist +mayor +murder +adequate +senator +yield +presentations +grades +cartoons +digest +lodging +hence +entirely +replaced +radar +rescue +undergraduate +losses +combat +reducing +stopped +occupation +lakes +donations +associations +citysearch +closely +radiation +diary +seriously +kings +shooting +flags +baker +launched +elsewhere +pollution +conservative +guestbook +shock +effectiveness +walls +abroad +ebony +drawn +arthur +visited +walker +demonstrate +atmosphere +suggests +beast +operated +experiment +targets +overseas +purchases +dodge +counsel +federation +pizza +invited +yards +assignment +chemicals +gordon +farmers +queries +ukraine +absence +nearest +cluster +vendors +whereas +serves +woods +surprise +partial +shoppers +everybody +couples +nashville +ranking +jokes +simpson +twiki +sublime +counseling +palace +acceptable +satisfied +measurements +verify +globe +trusted +copper +milwaukee +medication +warehouse +shareware +dicke +kerry +receipt +supposed +ordinary +nobody +ghost +violation +configure +stability +applying +southwest +pride +institutional +expectations +independence +knowing +reporter +metabolism +keith +champion +cloudy +linda +personally +chile +plenty +sentence +throat +ignore +maria +uniform +excellence +wealth +somewhere +vacuum +dancing +attributes +recognize +brass +writes +plaza +outcomes +survival +quest +publish +screening +thumbnail +trans +jonathan +whenever +lifetime +pioneer +booty +forgotten +acrobat +plates +acres +venue +athletic +thermal +essays +behaviour +vital +telling +fairly +coastal +config +charity +intelligent +edinburgh +excel +modes +obligation +campbell +stupid +harbor +hungary +traveler +segment +realize +regardless +enemy +puzzle +rising +aluminum +wells +wishlist +opens +insight +restricted +republican +secrets +lucky +latter +merchants +thick +trailers +repeat +syndrome +philips +attendance +penalty +glasses +enables +iraqi +builder +vista +jessica +chips +terry +flood +arguments +amsterdam +arena +adventures +pupils +stewart +announcement +outcome +appreciate +expanded +casual +grown +polish +lovely +extras +centres +jerry +clause +smile +lands +troops +indoor +bulgaria +armed +broker +charger +regularly +believed +cooling +trucks +mechanisms +divorce +laura +shopper +tokyo +partly +nikon +customize +tradition +candy +pills +tiger +donald +folks +sensor +exposed +telecom +angels +deputy +indicators +sealed +emissions +physicians +loaded +complaint +scenes +experiments +afghanistan +boost +spanking +scholarship +governance +founded +supplements +chronic +icons +moral +catering +finger +keeps +pound +locate +camcorder +trained +implementing +roses +ourselves +bread +tobacco +wooden +motors +tough +roberts +incident +gonna +dynamics +conversation +decrease +chest +pension +billy +revenues +emerging +worship +capability +craig +herself +producing +churches +precision +damages +reserves +contributed +solve +shorts +reproduction +minority +diverse +ingredients +johnny +franchise +recorder +complaints +facing +nancy +promotions +tones +passion +rehabilitation +maintaining +sight +defence +patches +refund +towns +environments +trembl +divided +reception +emails +cyprus +correctly +insider +seminars +consequences +makers +hearts +geography +appearing +integrity +worry +discrimination +carter +legacy +pleased +danger +vitamin +widely +processed +phrase +genuine +raising +implications +functionality +paradise +hybrid +reads +roles +intermediate +emotional +glory +platforms +bigger +billing +diesel +versus +combine +overnight +geographic +exceed +saudi +fault +preliminary +districts +introduce +promotional +chevrolet +babies +karen +compiled +romantic +revealed +specialists +generator +albert +examine +jimmy +graham +suspension +bristol +margaret +compaq +correction +slowly +authentication +communicate +rugby +supplement +showtimes +portions +infant +promoting +sectors +samuel +fluid +grounds +regards +machinery +bandwidth +unlike +equation +baskets +probability +dimension +wright +barry +proven +schedules +admissions +cached +warren +studied +reviewer +involves +quarterly +profits +devil +grass +comply +marie +florist +illustrated +cherry +continental +alternate +deutsch +achievement +limitations +kenya +webcam +funeral +nutten +earrings +enjoyed +automated +chapters +charlie +quebec +passenger +convenient +dennis +francis +sized +manga +noticed +socket +silent +literary +signals +orientation +theft +childhood +swing +symbols +humans +analog +facial +choosing +talent +dated +flexibility +seeker +wisdom +shoot +boundary +packard +offset +payday +philip +elite +holders +believes +swedish +poems +deadline +jurisdiction +robot +displaying +witness +collins +equipped +stages +encouraged +winds +powder +broadway +acquired +assess +cartridges +stones +entrance +gnome +roots +declaration +losing +attempts +gadgets +noble +glasgow +automation +impacts +gospel +advantages +shore +loves +induced +knight +preparing +loose +recipient +linking +extensions +appeals +earned +illness +islamic +athletics +southeast +alternatives +pending +parker +determining +lebanon +personalized +kennedy +conditioning +teenage +triple +cooper +vincent +secured +unusual +answered +partnerships +destruction +slots +increasingly +migration +disorder +routine +toolbar +basically +rocks +conventional +titans +applicants +wearing +sought +genes +mounted +habitat +firewall +median +scanner +herein +occupational +animated +judicial +adjustment +integer +treatments +bachelor +attitude +camcorders +engaged +falling +basics +montreal +carpet +struct +lenses +binary +genetics +attended +difficulty +collective +coalition +dropped +enrollment +walter +besides +producers +collector +hosts +interfaces +advertisers +moments +atlas +strings +representing +observation +feels +torture +deleted +mitchell +restoration +convenience +returning +ralph +opposition +container +defendant +warner +confirmation +embedded +inkjet +supervisor +wizard +corps +actors +liver +peripherals +liable +brochure +morris +bestsellers +petition +eminem +recall +antenna +picked +assumed +departure +minneapolis +belief +killing +bikini +memphis +shoulder +decor +lookup +texts +harvard +brokers +diameter +ottawa +podcast +seasons +interactions +refine +bidder +singer +evans +herald +literacy +fails +aging +intervention +plugin +attraction +diving +invite +modification +alice +latinas +suppose +customized +involve +moderate +terror +younger +thirty +opposite +understood +rapidly +dealtime +intro +mercedes +assurance +clerk +happening +mills +outline +amendments +tramadol +holland +receives +jeans +metropolitan +compilation +verification +fonts +refers +favor +veterans +sigma +attractive +xhtml +occasion +recordings +jefferson +victim +demands +sleeping +careful +gardening +obligations +arrive +orchestra +sunset +tracked +moreover +minimal +polyphonic +lottery +framed +aside +outsourcing +licence +adjustable +allocation +michelle +essay +discipline +demonstrated +dialogue +identifying +alphabetical +camps +declared +dispatched +aaron +handheld +trace +disposal +florists +packs +installing +switches +romania +voluntary +consult +greatly +blogging +cycling +midnight +commonly +photographer +inform +turkish +messaging +pentium +quantum +murray +intent +largely +pleasant +announce +constructed +additions +requiring +spoke +arrow +engagement +sampling +rough +weird +refinance +inspired +holes +weddings +blade +suddenly +oxygen +cookie +meals +canyon +meters +merely +calendars +arrangement +conclusions +passes +bibliography +pointer +compatibility +stretch +durham +furthermore +permits +cooperative +muslim +sleeve +netscape +cleaner +cricket +feeding +stroke +township +rankings +measuring +robin +robinson +jacksonville +strap +headquarters +sharon +crowd +transfers +olympic +transformation +remained +attachments +entities +customs +administrators +personality +rainbow +roulette +decline +gloves +israeli +medicare +skiing +cloud +facilitate +subscriber +valve +hewlett +explains +proceed +flickr +feelings +knife +jamaica +priorities +shelf +bookstore +timing +liked +parenting +adopt +denied +fotos +incredible +britney +freeware +donation +outer +deaths +rivers +commonwealth +pharmaceutical +manhattan +tales +katrina +workforce +islam +nodes +thumbs +seeds +cited +targeted +organizational +skype +realized +twelve +founder +decade +gamecube +dispute +portuguese +tired +titten +adverse +everywhere +excerpt +steam +discharge +drinks +voices +acute +halloween +climbing +stood +perfume +carol +honest +albany +hazardous +restore +stack +methodology +somebody +housewares +reputation +resistant +democrats +recycling +curve +creator +amber +qualifications +museums +coding +slideshow +tracker +variation +passage +transferred +trunk +hiking +pierre +jelsoft +headset +photograph +oakland +colombia +waves +camel +distributor +lamps +underlying +wrestling +suicide +archived +photoshop +arabia +gathering +projection +juice +chase +mathematical +logical +sauce +extract +specialized +diagnostic +panama +indianapolis +payable +corporations +courtesy +criticism +automobile +confidential +statutory +accommodations +athens +northeast +downloaded +judges +retired +remarks +detected +decades +paintings +walked +arising +nissan +bracelet +juvenile +injection +yorkshire +populations +protective +afraid +acoustic +railway +cassette +initially +indicator +pointed +causing +mistake +norton +locked +eliminate +fusion +mineral +sunglasses +steering +beads +fortune +preference +canvas +threshold +parish +claimed +screens +cemetery +planner +croatia +flows +stadium +venezuela +exploration +fewer +sequences +coupon +nurses +proxy +astronomy +lanka +edwards +contests +translate +announces +costume +tagged +berkeley +voted +killer +bikes +gates +adjusted +bishop +pulled +shaped +compression +seasonal +establishing +farmer +counters +constitutional +perfectly +slave +instantly +cultures +norfolk +coaching +examined +encoding +litigation +submissions +heroes +painted +lycos +zdnet +broadcasting +horizontal +artwork +cosmetic +resulted +portrait +terrorist +informational +ethical +carriers +ecommerce +mobility +floral +builders +struggle +schemes +suffering +neutral +fisher +spears +prospective +bedding +ultimately +joining +heading +equally +artificial +bearing +spectacular +coordination +connector +combo +seniors +worlds +guilty +affiliated +activation +naturally +haven +tablet +subscribers +charm +violent +mitsubishi +underwear +basin +potentially +ranch +constraints +crossing +inclusive +dimensional +cottage +drunk +considerable +crimes +resolved +mozilla +toner +latex +branches +anymore +delhi +holdings +alien +locator +selecting +processors +pantyhose +broke +nepal +zimbabwe +difficulties +complexity +constantly +browsing +resolve +barcelona +presidential +documentary +territories +melissa +moscow +thesis +nylon +palestinian +discs +rocky +bargains +frequent +nigeria +ceiling +pixels +ensuring +hispanic +legislature +hospitality +anybody +procurement +diamonds +fleet +untitled +bunch +totals +marriott +singing +theoretical +afford +exercises +starring +referral +surveillance +optimal +distinct +protocols +highlight +substitute +inclusion +hopefully +brilliant +turner +sucking +cents +reuters +spoken +omega +evaluated +stayed +civic +assignments +manuals +termination +watched +saver +thereof +grill +households +redeem +rogers +grain +authentic +regime +wanna +wishes +montgomery +architectural +louisville +depend +differ +macintosh +movements +ranging +monica +repairs +breath +amenities +virtually +candle +hanging +colored +authorization +verified +formerly +projector +situated +comparative +seeks +herbal +loving +strictly +routing +stanley +psychological +surprised +retailer +vitamins +elegant +gains +renewal +genealogy +opposed +deemed +scoring +expenditure +brooklyn +liverpool +sisters +critics +connectivity +spots +algorithms +hacker +madrid +similarly +margin +solely +salon +collaborative +norman +excluding +turbo +headed +voters +madonna +commander +murphy +thinks +thats +suggestion +soldier +phillips +aimed +justin +interval +mirrors +spotlight +tricks +reset +brush +investigate +expansys +panels +repeated +assault +connecting +spare +logistics +kodak +tongue +bowling +danish +monkey +proportion +filename +skirt +florence +invest +honey +analyses +drawings +significance +scenario +lovers +atomic +approx +symposium +arabic +gauge +essentials +junction +protecting +faced +rachel +solving +transmitted +weekends +screenshots +produces +intensive +chains +kingston +sixth +engage +deviant +switching +quoted +adapters +correspondence +farms +imports +supervision +cheat +bronze +expenditures +sandy +separation +testimony +suspect +celebrities +macro +sender +mandatory +boundaries +crucial +syndication +celebration +adjacent +filtering +tuition +spouse +exotic +viewer +signup +threats +luxembourg +puzzles +reaching +damaged +receptor +laugh +surgical +destroy +citation +pitch +autos +premises +perry +proved +offensive +imperial +dozen +benjamin +deployment +teeth +cloth +studying +colleagues +stamp +lotus +salmon +olympus +separated +cargo +directive +salem +starter +upgrades +likes +butter +pepper +weapon +luggage +burden +tapes +zones +races +stylish +maple +grocery +offshore +governing +retailers +depot +kenneth +blend +harrison +julie +occasionally +attending +emission +finest +realty +janet +recruiting +apparent +instructional +phpbb +autumn +traveling +probe +permissions +biotechnology +toilet +ranked +jackets +routes +packed +excited +outreach +helen +mounting +recover +lopez +balanced +prescribed +catherine +timely +talked +debug +delayed +chuck +reproduced +explicit +calculation +villas +ebook +consolidated +exclude +peeing +occasions +brooks +equations +newton +exceptional +anxiety +bingo +whilst +spatial +respondents +ceramic +prompt +precious +minds +annually +considerations +scanners +xanax +fingers +sunny +ebooks +delivers +queensland +necklace +musicians +leeds +composite +unavailable +cedar +arranged +theaters +advocacy +raleigh +essentially +designing +threaded +qualify +blair +hopes +assessments +mason +diagram +burns +pumps +footwear +beijing +peoples +victor +mario +attach +licenses +utils +removing +advised +brunswick +spider +ranges +pairs +sensitivity +trails +preservation +hudson +isolated +calgary +interim +assisted +divine +streaming +approve +chose +compound +intensity +technological +syndicate +abortion +dialog +venues +blast +wellness +calcium +newport +antivirus +addressing +discounted +indians +shield +harvest +membrane +prague +previews +bangladesh +constitute +locally +concluded +pickup +desperate +mothers +nascar +iceland +demonstration +governmental +manufactured +candles +graduation +sailing +variations +sacred +addiction +morocco +chrome +tommy +springfield +refused +brake +exterior +greeting +ecology +oliver +congo +botswana +delays +synthesis +olive +undefined +unemployment +cyber +verizon +scored +enhancement +newcastle +clone +dicks +velocity +lambda +relay +composed +tears +performances +oasis +baseline +angry +societies +silicon +brazilian +identical +petroleum +compete +norwegian +lover +belong +honolulu +beatles +retention +exchanges +rolls +thomson +barnes +soundtrack +wondering +malta +daddy +ferry +rabbit +profession +seating +separately +physiology +collecting +exports +omaha +participant +scholarships +recreational +dominican +electron +loads +friendship +heather +passport +motel +unions +treasury +warrant +solaris +frozen +occupied +royalty +scales +rally +observer +sunshine +strain +ceremony +somehow +arrested +expanding +provincial +investigations +yamaha +medications +hebrew +gained +rochester +dying +laundry +stuck +solomon +placing +stops +homework +adjust +assessed +advertiser +enabling +encryption +filling +downloadable +sophisticated +imposed +silence +focuses +soviet +possession +laboratories +treaty +vocal +trainer +organ +stronger +volumes +advances +vegetables +lemon +toxic +thumbnails +darkness +bizrate +vienna +implied +stanford +stockings +respondent +packing +statute +rejected +satisfy +destroyed +shelter +chapel +gamespot +manufacture +layers +wordpress +guided +vulnerability +accountability +celebrate +accredited +appliance +compressed +bahamas +powell +mixture +bench +rider +scheduling +radius +perspectives +mortality +logging +hampton +christians +borders +therapeutic +butts +bobby +impressive +sheep +accordingly +architect +railroad +lectures +challenging +wines +nursery +harder +microwave +cheapest +accidents +travesti +relocation +stuart +contributors +salvador +salad +monroe +tender +violations +temperatures +paste +clouds +competitions +discretion +tanzania +preserve +unsigned +staying +cosmetics +easter +theories +repository +praise +jeremy +venice +concentrations +estonia +christianity +veteran +streams +landing +signing +executed +katie +negotiations +realistic +showcase +integral +relax +namibia +generating +christina +congressional +synopsis +hardly +prairie +reunion +composer +sword +absent +photographic +sells +ecuador +hoping +accessed +spirits +modifications +coral +pixel +float +colin +imported +paths +bubble +acquire +contrary +millennium +tribune +vessel +acids +focusing +viruses +cheaper +admitted +dairy +admit +fancy +equality +samoa +achieving +stickers +fisheries +exceptions +reactions +leasing +lauren +beliefs +macromedia +companion +squad +analyze +ashley +scroll +relate +divisions +wages +additionally +suffer +forests +fellowship +invalid +concerts +martial +males +victorian +retain +colours +execute +tunnel +genres +cambodia +patents +copyrights +chaos +lithuania +mastercard +wheat +chronicles +obtaining +beaver +updating +distribute +readings +decorative +kijiji +confused +compiler +enlargement +eagles +bases +accused +campaigns +unity +conjunction +bride +defines +airports +instances +indigenous +begun +brunette +packets +anchor +socks +validation +parade +corruption +trigger +incentives +cholesterol +gathered +essex +slovenia +notified +differential +beaches +folders +dramatic +surfaces +terrible +routers +pendant +dresses +baptist +scientist +starsmerchant +hiring +clocks +arthritis +females +wallace +nevertheless +reflects +taxation +fever +cuisine +surely +practitioners +transcript +myspace +theorem +inflation +stylus +compounds +drums +contracting +arnold +structured +reasonably +chicks +cattle +radical +graduates +rover +recommends +controlling +treasure +reload +distributors +flame +levitra +tanks +assuming +monetary +elderly +arlington +particles +floating +extraordinary +indicating +bolivia +spell +hottest +stevens +coordinate +kuwait +exclusively +emily +alleged +limitation +widescreen +compile +webster +struck +illustration +plymouth +warnings +construct +inquiries +bridal +annex +inspiration +tribal +curious +affecting +freight +rebate +meetup +eclipse +sudan +downloading +shuttle +aggregate +stunning +cycles +affects +forecasts +detect +actively +ampland +complicated +fastest +butler +shopzilla +injured +decorating +payroll +cookbook +expressions +courier +uploaded +shakespeare +hints +collapse +americas +connectors +unlikely +conflicts +techno +beverage +tribute +wired +elvis +immune +latvia +travelers +forestry +barriers +rarely +infected +offerings +martha +genesis +barrier +argue +incorrect +trains +metals +bicycle +furnishings +letting +arise +guatemala +celtic +thereby +jamie +particle +perception +minerals +advise +humidity +bottles +boxing +bangkok +renaissance +pathology +ordinance +hughes +photographers +infections +jeffrey +chess +operates +brisbane +configured +survive +oscar +festivals +menus +possibilities +reveal +canal +amino +contributing +herbs +clinics +manitoba +analytical +missions +watson +lying +costumes +strict +saddam +circulation +drill +offense +bryan +protest +assumption +jerusalem +hobby +tries +transexuales +invention +nickname +technician +inline +executives +enquiries +washing +staffing +cognitive +exploring +trick +enquiry +closure +timber +intense +playlist +registrar +showers +supporters +ruling +steady +statutes +withdrawal +myers +drops +predicted +wider +saskatchewan +cancellation +plugins +enrolled +sensors +screw +ministers +publicly +hourly +blame +geneva +freebsd +veterinary +prostores +reseller +handed +suffered +intake +informal +relevance +incentive +butterfly +tucson +mechanics +heavily +swingers +fifty +headers +mistakes +numerical +uncle +defining +counting +reflection +accompanied +assure +invitation +devoted +princeton +jacob +sodium +randy +spirituality +hormone +meanwhile +proprietary +timothy +childrens +brick +naval +thumbzilla +medieval +porcelain +bridges +pichunter +captured +thehun +decent +casting +dayton +translated +shortly +cameron +columnists +carlos +donna +andreas +warrior +diploma +cabin +innocent +scanning +consensus +valium +copying +delivering +cordless +patricia +eddie +uganda +fired +journalism +trivia +adidas +perth +grammar +intention +syria +disagree +klein +harvey +tires +undertaken +hazard +retro +statewide +semiconductor +gregory +episodes +boolean +circular +anger +mainland +illustrations +suits +chances +interact +happiness +substantially +bizarre +glenn +auckland +olympics +fruits +identifier +ribbon +calculations +conducting +startup +suzuki +trinidad +kissing +handy +exempt +crops +reduces +accomplished +calculators +geometry +impression +slovakia +guild +correlation +gorgeous +capitol +dishes +barbados +chrysler +nervous +refuse +extends +fragrance +mcdonald +replica +plumbing +brussels +tribe +neighbors +trades +superb +transparent +trinity +charleston +handled +legends +champions +floors +selections +projectors +inappropriate +exhaust +comparing +shanghai +speaks +burton +vocational +davidson +copied +scotia +farming +gibson +pharmacies +roller +introducing +batch +organize +appreciated +alter +nicole +latino +ghana +edges +mixing +handles +skilled +fitted +albuquerque +harmony +distinguished +asthma +projected +assumptions +shareholders +twins +developmental +regulated +triangle +amend +anticipated +oriental +reward +windsor +zambia +completing +hydrogen +webshots +sprint +comparable +chick +advocate +confusion +copyrighted +inputs +warranties +genome +escorts +documented +thong +medal +paperbacks +coaches +vessels +harbour +walks +keyboards +knives +vulnerable +arrange +artistic +honors +booth +indie +reflected +unified +bones +breed +detector +ignored +polar +fallen +precise +sussex +respiratory +notifications +msgid +transexual +mainstream +invoice +evaluating +subcommittee +gather +maternity +backed +alfred +colonial +carey +motels +forming +embassy +journalists +danny +rebecca +slight +proceeds +indirect +amongst +foundations +msgstr +arrest +volleyball +adipex +horizon +deeply +toolbox +marina +liabilities +prizes +bosnia +browsers +decreased +patio +tolerance +surfing +creativity +lloyd +describing +optics +pursue +lightning +overcome +quotations +inspector +attract +brighton +beans +bookmarks +ellis +disable +snake +succeed +leonard +lending +reminder +searched +behavioral +riverside +bathrooms +plains +raymond +insights +abilities +initiated +sullivan +midwest +karaoke +lonely +nonprofit +lancaster +suspended +hereby +observe +julia +containers +attitudes +berry +collar +simultaneously +racial +integrate +bermuda +amanda +sociology +mobiles +screenshot +exhibitions +kelkoo +confident +retrieved +exhibits +officially +consortium +terrace +bacteria +replied +seafood +novels +recipients +ought +delicious +traditions +safely +finite +kidney +periodically +fixes +sends +durable +mazda +allied +throws +moisture +hungarian +roster +referring +symantec +spencer +wichita +nasdaq +uruguay +transform +timer +tablets +tuning +gotten +educators +tyler +futures +vegetable +verse +highs +humanities +independently +wanting +custody +scratch +launches +alignment +masturbating +henderson +britannica +ellen +competitors +rocket +bullet +towers +racks +nasty +visibility +latitude +consciousness +tumor +deposits +beverly +mistress +encounter +trustees +watts +duncan +reprints +bernard +resolutions +accessing +forty +tubes +attempted +midlands +priest +floyd +ronald +analysts +queue +trance +locale +nicholas +bundle +hammer +invasion +witnesses +runner +administered +notion +skins +mailed +fujitsu +spelling +arctic +exams +rewards +beneath +strengthen +defend +frederick +medicaid +infrared +seventh +welsh +belly +aggressive +advertisements +quarters +stolen +soonest +haiti +disturbed +determines +sculpture +naturals +motivation +lenders +pharmacology +fitting +fixtures +bloggers +agrees +passengers +quantities +petersburg +consistently +powerpoint +surplus +elder +sonic +obituaries +cheers +punishment +appreciation +subsequently +belarus +zoning +gravity +providence +thumb +restriction +incorporate +backgrounds +treasurer +guitars +essence +flooring +lightweight +ethiopia +mighty +athletes +humanity +transcription +holmes +complications +scholars +scripting +remembered +galaxy +chester +snapshot +caring +synthetic +segments +testament +dominant +twist +specifics +itunes +stomach +partially +buried +newbie +minimize +darwin +ranks +wilderness +debut +generations +tournaments +bradley +anatomy +sponsorship +headphones +fraction +proceeding +defects +volkswagen +uncertainty +breakdown +milton +marker +reconstruction +subsidiary +strengths +clarity +sandra +adelaide +encouraging +furnished +monaco +settled +folding +emirates +terrorists +airfare +comparisons +beneficial +distributions +vaccine +belize +viewpicture +promised +volvo +penny +robust +bookings +threatened +minolta +republicans +discusses +porter +jungle +responded +abstracts +ivory +alpine +prediction +pharmaceuticals +andale +fabulous +remix +alias +thesaurus +individually +battlefield +literally +newer +ecological +spice +implies +cooler +appraisal +consisting +maritime +periodic +submitting +overhead +ascii +prospect +shipment +breeding +citations +geographical +donor +mozambique +tension +trash +shapes +manor +envelope +diane +homeland +disclaimers +championships +excluded +andrea +breeds +rapids +disco +sheffield +bailey +endif +finishing +emotions +wellington +incoming +prospects +lexmark +cleaners +bulgarian +eternal +cashiers +aboriginal +remarkable +rotation +preventing +productive +boulevard +eugene +metric +compliant +minus +penalties +bennett +imagination +hotmail +refurbished +joshua +armenia +varied +grande +closest +activated +actress +conferencing +assign +armstrong +politicians +trackbacks +accommodate +tigers +aurora +slides +milan +premiere +lender +villages +shade +chorus +christine +rhythm +digit +argued +dietary +symphony +clarke +sudden +accepting +precipitation +marilyn +lions +findlaw +pools +lyric +claire +isolation +speeds +sustained +matched +approximate +carroll +rational +programmer +fighters +chambers +greetings +inherited +warming +incomplete +vocals +chronicle +fountain +chubby +grave +legitimate +biographies +burner +investigator +plaintiff +finnish +gentle +prisoners +deeper +muslims +mediterranean +nightlife +footage +howto +worthy +reveals +architects +saints +entrepreneur +carries +freelance +excessive +devon +screensaver +helena +saves +regarded +valuation +unexpected +cigarette +characteristic +marion +lobby +egyptian +tunisia +metallica +outlined +consequently +headline +treating +punch +appointments +gotta +cowboy +narrative +bahrain +enormous +karma +consist +betty +queens +academics +quantitative +lucas +screensavers +subdivision +tribes +defeat +clicks +distinction +honduras +naughty +hazards +insured +harper +livestock +mardi +exemption +tenant +sustainability +cabinets +tattoo +shake +algebra +shadows +holly +formatting +silly +nutritional +mercy +hartford +freely +marcus +sunrise +wrapping +nicaragua +weblogs +timeline +belongs +readily +affiliation +fence +nudist +infinite +diana +ensures +relatives +lindsay +legally +shame +satisfactory +revolutionary +bracelets +civilian +telephony +fatal +remedy +realtors +breathing +briefly +thickness +adjustments +graphical +genius +discussing +aerospace +fighter +meaningful +flesh +retreat +adapted +barely +wherever +estates +democrat +borough +maintains +failing +shortcuts +retained +voyeurweb +pamela +andrews +marble +extending +jesse +specifies +logitech +surrey +briefing +belkin +accreditation +blackberry +highland +meditation +modular +microphone +macedonia +combining +brandon +instrumental +giants +organizing +balloon +moderators +winston +solved +kazakhstan +hawaiian +standings +partition +invisible +gratuit +consoles +qatar +magnet +translations +porsche +cayman +jaguar +sheer +commodity +posing +kilometers +thanksgiving +hopkins +urgent +guarantees +infants +gothic +cylinder +witch +indication +congratulations +cohen +puppy +kathy +graphs +surround +cigarettes +revenge +expires +enemies +controllers +consultancy +finances +accepts +enjoying +conventions +patrol +smell +italiano +coordinates +carnival +roughly +sticker +promises +responding +physically +divide +stakeholders +hydrocodone +consecutive +cornell +satin +deserve +attempting +mailto +promo +representations +worried +tunes +garbage +competing +combines +bradford +phrases +peninsula +chelsea +boring +reynolds +accurately +speeches +reaches +schema +considers +catalogs +ministries +vacancies +quizzes +parliamentary +prefix +lucia +savannah +barrel +typing +nerve +planets +deficit +boulder +pointing +renew +coupled +myanmar +metadata +harold +circuits +floppy +texture +handbags +somerset +incurred +acknowledge +thoroughly +antigua +nottingham +thunder +caution +identifies +questionnaire +qualification +locks +modelling +namely +miniature +euros +interstate +pirates +aerial +consequence +rebel +systematic +perceived +origins +hired +makeup +textile +madagascar +nathan +tobago +presenting +troubleshooting +uzbekistan +indexes +centuries +magnitude +richardson +hindu +fragrances +vocabulary +licking +earthquake +fundraising +markers +weights +albania +geological +assessing +lasting +wicked +introduces +kills +roommate +webcams +pushed +webmasters +computational +acdbentity +participated +handhelds +answering +impressed +slope +reggae +failures +conspiracy +surname +theology +nails +evident +whats +rides +rehab +saturn +organizer +allergy +twisted +combinations +preceding +merit +enzyme +cumulative +zshops +planes +edmonton +tackle +disks +condo +pokemon +amplifier +ambien +arbitrary +prominent +retrieve +lexington +vernon +worldcat +titanium +fairy +builds +contacted +shaft +recorders +occasional +leslie +casio +deutsche +postings +innovations +kitty +postcards +drain +monte +fires +algeria +blessed +reviewing +cardiff +cornwall +favors +potato +panic +explicitly +sticks +leone +transsexual +citizenship +excuse +reforms +basement +onion +strand +sandwich +lawsuit +informative +girlfriend +bloomberg +cheque +hierarchy +influenced +banners +reject +abandoned +circles +italic +beats +merry +scuba +complement +passive +mauritius +valued +checklist +requesting +courage +verde +lauderdale +scenarios +gazette +hitachi +extraction +batman +elevation +hearings +coleman +utilization +beverages +calibration +efficiently +anaheim +textbook +dried +entertaining +prerequisite +luther +frontier +settle +stopping +refugees +knights +hypothesis +palmer +medicines +derby +peaceful +altered +pontiac +regression +doctrine +scenic +trainers +enhancements +renewable +intersection +passwords +sewing +consistency +collectors +conclude +recognised +munich +celebs +propose +azerbaijan +lighter +astrology +advisors +pavilion +tactics +trusts +occurring +supplemental +travelling +talented +annie +pillow +induction +derek +precisely +shorter +harley +spreading +provinces +relying +finals +paraguay +steal +parcel +refined +fifteen +widespread +incidence +fears +predict +boutique +acrylic +rolled +tuner +incidents +peterson +shannon +toddler +enhancing +flavor +alike +homeless +horrible +hungry +metallic +blocked +interference +warriors +palestine +listprice +cadillac +atmospheric +malawi +sagem +knowledgestorm +curtis +parental +referenced +strikes +lesser +publicity +marathon +proposition +pressing +gasoline +dressed +scout +belfast +dealt +niagara +warcraft +charms +catalyst +trader +bucks +allowance +denial +designation +thrown +prepaid +raises +duplicate +electro +criterion +badge +wrist +civilization +analyzed +vietnamese +heath +tremendous +ballot +lexus +varying +remedies +validity +trustee +weighted +angola +performs +plastics +realm +corrected +jenny +helmet +salaries +postcard +elephant +yemen +encountered +tsunami +scholar +nickel +internationally +surrounded +buses +expedia +geology +creatures +coating +commented +wallet +cleared +smilies +accomplish +boating +drainage +shakira +corners +broader +vegetarian +rouge +yeast +newfoundland +clearing +investigated +ambassador +coated +intend +stephanie +contacting +vegetation +findarticles +louise +kenny +specially +routines +hitting +yukon +beings +aquatic +reliance +habits +striking +infectious +podcasts +singh +gilbert +ferrari +continuity +brook +outputs +phenomenon +ensemble +insulin +assured +biblical +conscious +accent +mysimon +eleven +wives +ambient +utilize +mileage +prostate +adaptor +auburn +unlock +hyundai +pledge +vampire +angela +relates +nitrogen +xerox +merger +softball +referrals +differently +firewire +nextel +framing +organised +musician +blocking +rwanda +sorts +integrating +vsnet +limiting +dispatch +revisions +papua +restored +armor +riders +chargers +remark +dozens +varies +reasoning +rendered +picking +charitable +guards +annotated +convinced +openings +burlington +replacing +researcher +watershed +councils +occupations +acknowledged +kruger +pockets +granny +equilibrium +viral +inquire +pipes +characterized +laden +aruba +cottages +realtor +merge +privilege +edgar +develops +qualifying +chassis +dubai +estimation +pushing +fleece +pediatric +pierce +allan +dressing +techrepublic +sperm +filme +craps +frost +institutes +sally +yacht +tracy +prefers +drilling +brochures +breach +whale +traveller +appropriations +suspected +tomatoes +benchmark +beginners +instructors +highlighted +bedford +stationery +mustang +unauthorized +clusters +antibody +competent +momentum +wiring +pastor +calvin +shark +contributor +demonstrates +phases +grateful +emerald +gradually +laughing +grows +cliff +desirable +tract +ballet +journalist +abraham +bumper +afterwards +webpage +religions +garlic +hostels +shine +senegal +explosion +banned +wendy +briefs +signatures +diffs +mumbai +ozone +disciplines +daughters +conversations +radios +tariff +nvidia +opponent +pasta +simplified +muscles +serum +wrapped +swift +motherboard +runtime +inbox +focal +bibliographic +distant +champagne +decimal +deviation +superintendent +propecia +samba +hostel +housewives +employ +mongolia +penguin +magical +influences +inspections +irrigation +miracle +manually +reprint +hydraulic +centered +robertson +yearly +penetration +wound +belle +conviction +omissions +writings +hamburg +retrieval +qualities +cindy +fathers +charging +marvel +lined +prototype +importantly +petite +apparatus +terrain +explaining +strips +gossip +rangers +nomination +empirical +rotary +dependence +discrete +beginner +boxed +sexuality +polyester +cubic +commitments +suggesting +sapphire +kinase +skirts +remainder +crawford +labeled +privileges +televisions +specializing +marking +commodities +serbia +sheriff +griffin +declined +guyana +spies +neighbor +motorcycles +elect +highways +thinkpad +concentrate +intimate +reproductive +preston +deadly +bunny +chevy +molecules +rounds +longest +refrigerator +tions +intervals +sentences +dentists +exclusion +workstation +holocaust +flyer +dosage +receivers +customise +disposition +variance +navigator +investigators +cameroon +baking +marijuana +adaptive +computed +needle +baths +cathedral +brakes +nirvana +fairfield +invision +sticky +destiny +generous +madness +emacs +climb +blowing +fascinating +landscapes +heated +lafayette +jackie +computation +cardiovascular +sparc +cardiac +salvation +dover +adrian +predictions +accompanying +vatican +brutal +learners +selective +arbitration +configuring +token +editorials +sacrifice +seekers +removable +convergence +yields +gibraltar +suited +numeric +anthropology +skating +kinda +aberdeen +emperor +malpractice +dylan +belts +blacks +educated +rebates +reporters +burke +proudly +necessity +rendering +inserted +pulling +basename +obesity +curves +suburban +touring +clara +vertex +hepatitis +nationally +tomato +andorra +waterproof +expired +travels +flush +waiver +specialties +hayes +humanitarian +invitations +functioning +delight +survivor +garcia +cingular +economies +alexandria +bacterial +moses +counted +undertake +declare +continuously +johns +valves +impaired +achievements +donors +jewel +teddy +convertible +teaches +ventures +bufing +stranger +tragedy +julian +dryer +painful +velvet +tribunal +ruled +pensions +prayers +funky +secretariat +nowhere +paragraphs +joins +adolescent +nominations +wesley +lately +cancelled +scary +mattress +mpegs +brunei +likewise +banana +introductory +slovak +cakes +reservoir +occurrence +mixer +remind +worcester +sbjct +demographic +charming +tooth +disciplinary +annoying +respected +stays +disclose +affair +drove +washer +upset +restrict +springer +beside +mines +portraits +rebound +logan +mentor +interpreted +evaluations +fought +baghdad +elimination +metres +hypothetical +immigrants +complimentary +helicopter +pencil +freeze +performer +titled +commissions +sphere +powerseller +ratios +concord +graduated +endorsed +surprising +walnut +lance +ladder +italia +unnecessary +dramatically +liberia +sherman +maximize +hansen +senators +workout +yugoslavia +bleeding +characterization +colon +likelihood +lanes +purse +fundamentals +contamination +endangered +compromise +masturbation +optimize +stating +caroline +expiration +namespace +align +peripheral +bless +engaging +negotiation +crest +opponents +triumph +nominated +confidentiality +electoral +changelog +welding +deferred +alternatively +alloy +condos +plots +polished +gently +greensboro +tulsa +locking +casey +controversial +draws +fridge +blanket +bloom +simpsons +elliott +recovered +fraser +justify +upgrading +blades +loops +surge +frontpage +trauma +tahoe +advert +possess +demanding +defensive +flashers +subaru +forbidden +vanilla +programmers +monitored +installations +deutschland +picnic +souls +arrivals +spank +practitioner +motivated +smithsonian +hollow +vault +securely +examining +fioricet +groove +revelation +pursuit +delegation +wires +dictionaries +mails +backing +greenhouse +sleeps +blake +transparency +travis +endless +figured +orbit +currencies +niger +bacon +survivors +positioning +heater +colony +cannon +circus +promoted +forbes +moldova +descending +paxil +spine +trout +enclosed +temporarily +cooked +thriller +transmit +apnic +fatty +gerald +pressed +frequencies +scanned +reflections +hunger +mariah +municipality +joyce +detective +surgeon +cement +experiencing +fireplace +endorsement +planners +disputes +textiles +missile +intranet +closes +psychiatry +persistent +deborah +marco +assists +summaries +gabriel +auditor +aquarium +violin +prophet +bracket +looksmart +isaac +oxide +magnificent +colleague +naples +promptly +modems +adaptation +harmful +paintball +prozac +sexually +enclosure +dividend +newark +glucose +phantom +playback +supervisors +westminster +turtle +distances +absorption +treasures +warned +neural +fossil +hometown +badly +transcripts +apollo +disappointed +persian +continually +communist +collectible +handmade +greene +entrepreneurs +robots +grenada +creations +scoop +acquisitions +earning +mailman +sanyo +nested +biodiversity +excitement +somalia +movers +verbal +blink +presently +carlo +workflow +mysterious +novelty +bryant +tiles +voyuer +librarian +subsidiaries +switched +stockholm +tamil +garmin +fuzzy +indonesian +grams +therapist +richards +budgets +toolkit +promising +relaxation +render +carmen +thereafter +hardwood +erotica +temporal +forge +commissioners +dense +brave +forwarding +awful +nightmare +airplane +reductions +southampton +istanbul +impose +organisms +telescope +viewers +asbestos +portsmouth +meyer +enters +savage +advancement +harassment +willow +resumes +throwing +existed +generators +wagon +barbie +favour +knock +generates +potatoes +thorough +replication +inexpensive +receptors +peers +roland +optimum +interventions +quilt +huntington +creature +mounts +syracuse +internship +refresh +aluminium +snowboard +beastality +webcast +michel +evanescence +subtle +coordinated +notre +shipments +maldives +stripes +firmware +antarctica +shepherd +canberra +cradle +chancellor +mambo +flour +controversy +legendary +sympathy +choir +avoiding +beautifully +blond +expects +jumping +fabrics +antibodies +polymer +hygiene +poultry +virtue +burst +examinations +surgeons +bouquet +immunology +promotes +mandate +wiley +departmental +corpus +johnston +terminology +gentleman +fibre +reproduce +convicted +shades +indices +roommates +adware +threatening +spokesman +zoloft +activists +frankfurt +prisoner +daisy +halifax +encourages +ultram +cursor +assembled +earliest +donated +stuffed +restructuring +insects +terminals +crude +morrison +maiden +simulations +sufficiently +examines +viking +myrtle +bored +cleanup +conditional +crossword +bother +budapest +conceptual +knitting +attacked +bhutan +liechtenstein +mating +compute +redhead +arrives +translator +automobiles +tractor +allah +continent +unwrap +fares +longitude +resist +challenged +telecharger +hoped +safer +insertion +instrumentation +wagner +constraint +groundwater +touched +strengthening +cologne +wishing +ranger +smallest +insulation +newman +marsh +ricky +scared +theta +infringement +subjective +monsters +asylum +lightbox +robbie +stake +cocktail +outlets +swaziland +varieties +arbor +mediawiki +configurations +poison diff --git a/devel/devel-server.py b/devel/devel-server.py new file mode 100755 index 0000000..e4b2717 --- /dev/null +++ b/devel/devel-server.py @@ -0,0 +1,287 @@ +#!/usr/bin/python3 + +import asyncio +import cgitb +import html +import cgi +import http.server +import io +import json +import mimetypes +import moth +import logging +import os +import pathlib +import random +import shutil +import socketserver +import sys +import traceback +import mothballer +import parse +import urllib.parse +import posixpath +from http import HTTPStatus + + +sys.dont_write_bytecode = True # Don't write .pyc files + + +class MothServer(socketserver.ForkingMixIn, http.server.HTTPServer): + def __init__(self, server_address, RequestHandlerClass): + super().__init__(server_address, RequestHandlerClass) + self.args = {} + + +class MothRequestHandler(http.server.SimpleHTTPRequestHandler): + endpoints = [] + + def __init__(self, request, client_address, server): + self.directory = str(server.args["theme_dir"]) + try: + super().__init__(request, client_address, server, directory=server.args["theme_dir"]) + except TypeError: + super().__init__(request, client_address, server) + + + # Backport from Python 3.7 + def translate_path(self, path): + # I guess we just hope that some other thread doesn't call getcwd + getcwd = os.getcwd + os.getcwd = lambda: self.directory + ret = super().translate_path(path) + os.getcwd = getcwd + return ret + + + def get_puzzle(self): + category = self.req.get("cat") + points = int(self.req.get("points")) + catpath = str(self.server.args["puzzles_dir"].joinpath(category)) + cat = moth.Category(catpath, self.seed) + puzzle = cat.puzzle(points) + return puzzle + + + def send_json(self, obj): + self.send_response(200) + self.send_header("Content-Type", "application/json") + self.end_headers() + self.wfile.write(json.dumps(obj).encode("utf-8")) + + + def handle_register(self): + # Everybody eats when they come to my house + ret = { + "status": "success", + "data": { + "short": "You win", + "description": "Welcome to the development server, you wily hacker you" + } + } + self.send_json(ret) + endpoints.append(('/{seed}/register', handle_register)) + + + def handle_answer(self): + for f in ("cat", "points", "answer"): + self.req[f] = self.fields.getfirst(f) + puzzle = self.get_puzzle() + ret = { + "status": "success", + "data": { + "short": "", + "description": "Provided answer was not in list of answers" + }, + } + + if self.req.get("answer") in puzzle.answers: + ret["data"]["description"] = "Answer is correct" + self.send_json(ret) + endpoints.append(('/{seed}/answer', handle_answer)) + + + def puzzlelist(self): + puzzles = {} + for p in self.server.args["puzzles_dir"].glob("*"): + if not p.is_dir() or p.match(".*"): + continue + catName = p.parts[-1] + cat = moth.Category(str(p), self.seed) + puzzles[catName] = [[i, str(i)] for i in cat.pointvals()] + puzzles[catName].append([0, ""]) + if len(puzzles) <= 1: + logging.warning("No directories found matching {}/*".format(self.server.args["puzzles_dir"])) + + return puzzles + + + # XXX: Remove this (redundant) when we've upgraded the bundled theme (probably v3.6 and beyond) + def handle_puzzlelist(self): + self.send_json(self.puzzlelist()) + endpoints.append(('/{seed}/puzzles.json', handle_puzzlelist)) + + + def handle_state(self): + resp = { + "Config": { + "Devel": True, + }, + "Puzzles": self.puzzlelist(), + "Messages": "
[MOTH Development Server] Participant broadcast messages would go here.
", + } + self.send_json(resp) + endpoints.append(('/{seed}/state', handle_state)) + + + def handle_puzzle(self): + puzzle = self.get_puzzle() + + obj = puzzle.package() + obj["answers"] = puzzle.answers + obj["hint"] = puzzle.hint + obj["summary"] = puzzle.summary + obj["logs"] = puzzle.logs + + self.send_json(obj) + endpoints.append(('/{seed}/content/{cat}/{points}/puzzle.json', handle_puzzle)) + + + def handle_puzzlefile(self): + puzzle = self.get_puzzle() + + try: + file = puzzle.files[self.req["filename"]] + except KeyError: + self.send_error( + HTTPStatus.NOT_FOUND, + "File Not Found: %s" % self.req["filename"], + ) + return + + self.send_response(200) + self.send_header("Content-Type", mimetypes.guess_type(file.name)) + self.end_headers() + shutil.copyfileobj(file.stream, self.wfile) + endpoints.append(("/{seed}/content/{cat}/{points}/{filename}", handle_puzzlefile)) + + + def handle_mothballer(self): + category = self.req.get("cat") + + try: + catdir = self.server.args["puzzles_dir"].joinpath(category) + mb = mothballer.package(category, str(catdir), self.seed) + except Exception as ex: + logging.exception(ex) + self.send_response(500) + self.send_header("Content-Type", "text/html; charset=\"utf-8\"") + self.end_headers() + self.wfile.write(cgitb.html(sys.exc_info()).encode("utf-8")) + return + + self.send_response(200) + self.send_header("Content-Type", "application/octet_stream") + self.end_headers() + shutil.copyfileobj(mb, self.wfile) + endpoints.append(("/{seed}/mothballer/{cat}.mb", handle_mothballer)) + + + def handle_index(self): + seed = random.getrandbits(32) + self.send_response(307) + self.send_header("Location", "%s/" % seed) + self.send_header("Content-Type", "text/html") + self.end_headers() + self.wfile.write(b"Your browser was supposed to redirect you to here." % seed) + endpoints.append((r"/", handle_index)) + + + def handle_theme_file(self): + self.path = "/" + self.req.get("path", "") + super().do_GET() + endpoints.append(("/{seed}/", handle_theme_file)) + endpoints.append(("/{seed}/{path}", handle_theme_file)) + + + def do_GET(self): + self.fields = cgi.FieldStorage( + fp=self.rfile, + headers=self.headers, + environ={ + "REQUEST_METHOD": self.command, + "CONTENT_TYPE": self.headers["Content-Type"], + }, + ) + + url = urllib.parse.urlparse(self.path) + for pattern, function in self.endpoints: + result = parse.parse(pattern, url.path) + if result: + self.req = result.named + seed = self.req.get("seed", "random") + if seed == "random": + self.seed = random.getrandbits(32) + else: + self.seed = int(seed) + return function(self) + super().do_GET() + + def do_POST(self): + self.do_GET() + + def do_HEAD(self): + self.send_error( + HTTPStatus.NOT_IMPLEMENTED, + "Unsupported method (%r)" % self.command, + ) + +# I don't fully understand why you can't do this inside the class definition. +MothRequestHandler.extensions_map[".mjs"] = "application/ecmascript" + + +if __name__ == '__main__': + import argparse + + parser = argparse.ArgumentParser(description="MOTH puzzle development server") + parser.add_argument( + '--puzzles', default='puzzles', + help="Directory containing your puzzles" + ) + parser.add_argument( + '--theme', default='theme', + help="Directory containing theme files") + parser.add_argument( + '--bind', default="127.0.0.1:8080", + help="Bind to ip:port" + ) + parser.add_argument( + '--base', default="", + help="Base URL to this server, for reverse proxy setup" + ) + parser.add_argument( + "-v", "--verbose", + action="count", + default=1, # Leave at 1, for now, to maintain current default behavior + help="Include more verbose logging. Use multiple flags to increase level", + ) + args = parser.parse_args() + parts = args.bind.split(":") + addr = parts[0] or "0.0.0.0" + port = int(parts[1]) + if args.verbose >= 2: + log_level = logging.DEBUG + elif args.verbose == 1: + log_level = logging.INFO + else: + log_level = logging.WARNING + + logging.basicConfig(level=log_level) + + server = MothServer((addr, port), MothRequestHandler) + server.args["base_url"] = args.base + server.args["puzzles_dir"] = pathlib.Path(args.puzzles) + server.args["theme_dir"] = args.theme + + logging.info("Listening on %s:%d", addr, port) + server.serve_forever() diff --git a/devel/mistune.py b/devel/mistune.py new file mode 100644 index 0000000..a81c4c1 --- /dev/null +++ b/devel/mistune.py @@ -0,0 +1,1190 @@ +# coding: utf-8 +"""mistune + ~~~~~~~ + + The fastest markdown parser in pure Python with renderer feature. + + Copyright (c) 2014 - 2015, Hsiaoming Yang + + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the creator nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS + BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF + THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. +""" + +import re +import inspect + +__version__ = '0.7.3' +__author__ = 'Hsiaoming Yang%s\n
\n' % code
+ code = escape(code, quote=True, smart_amp=False)
+ return '%s\n
\n' % (lang, code)
+
+ def block_quote(self, text):
+ """Rendering with the given text. + + :param text: text content of the blockquote. + """ + return '%s\n\n' % text.rstrip('\n') + + def block_html(self, html): + """Rendering block level pure html content. + + :param html: text content of the html snippet. + """ + if self.options.get('skip_style') and \ + html.lower().startswith('