| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736 | 
							- /******/ (function(modules) { // webpackBootstrap
 
- /******/ 	// The module cache
 
- /******/ 	var installedModules = {};
 
- /******/
 
- /******/ 	// The require function
 
- /******/ 	function __webpack_require__(moduleId) {
 
- /******/
 
- /******/ 		// Check if module is in cache
 
- /******/ 		if(installedModules[moduleId]) {
 
- /******/ 			return installedModules[moduleId].exports;
 
- /******/ 		}
 
- /******/ 		// Create a new module (and put it into the cache)
 
- /******/ 		var module = installedModules[moduleId] = {
 
- /******/ 			i: moduleId,
 
- /******/ 			l: false,
 
- /******/ 			exports: {}
 
- /******/ 		};
 
- /******/
 
- /******/ 		// Execute the module function
 
- /******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
 
- /******/
 
- /******/ 		// Flag the module as loaded
 
- /******/ 		module.l = true;
 
- /******/
 
- /******/ 		// Return the exports of the module
 
- /******/ 		return module.exports;
 
- /******/ 	}
 
- /******/
 
- /******/
 
- /******/ 	// expose the modules object (__webpack_modules__)
 
- /******/ 	__webpack_require__.m = modules;
 
- /******/
 
- /******/ 	// expose the module cache
 
- /******/ 	__webpack_require__.c = installedModules;
 
- /******/
 
- /******/ 	// define getter function for harmony exports
 
- /******/ 	__webpack_require__.d = function(exports, name, getter) {
 
- /******/ 		if(!__webpack_require__.o(exports, name)) {
 
- /******/ 			Object.defineProperty(exports, name, {
 
- /******/ 				configurable: false,
 
- /******/ 				enumerable: true,
 
- /******/ 				get: getter
 
- /******/ 			});
 
- /******/ 		}
 
- /******/ 	};
 
- /******/
 
- /******/ 	// getDefaultExport function for compatibility with non-harmony modules
 
- /******/ 	__webpack_require__.n = function(module) {
 
- /******/ 		var getter = module && module.__esModule ?
 
- /******/ 			function getDefault() { return module['default']; } :
 
- /******/ 			function getModuleExports() { return module; };
 
- /******/ 		__webpack_require__.d(getter, 'a', getter);
 
- /******/ 		return getter;
 
- /******/ 	};
 
- /******/
 
- /******/ 	// Object.prototype.hasOwnProperty.call
 
- /******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
 
- /******/
 
- /******/ 	// __webpack_public_path__
 
- /******/ 	__webpack_require__.p = "";
 
- /******/
 
- /******/ 	// Load entry module and return exports
 
- /******/ 	return __webpack_require__(__webpack_require__.s = 21);
 
- /******/ })
 
- /************************************************************************/
 
- /******/ ([
 
- /* 0 */
 
- /***/ (function(module, exports) {
 
- var g;
 
- // This works in non-strict mode
 
- g = (function() {
 
- 	return this;
 
- })();
 
- try {
 
- 	// This works if eval is allowed (see CSP)
 
- 	g = g || Function("return this")() || (1,eval)("this");
 
- } catch(e) {
 
- 	// This works if the window reference is available
 
- 	if(typeof window === "object")
 
- 		g = window;
 
- }
 
- // g can still be undefined, but nothing to do about it...
 
- // We return undefined, instead of nothing here, so it's
 
- // easier to handle this case. if(!global) { ...}
 
- module.exports = g;
 
- /***/ }),
 
- /* 1 */
 
- /***/ (function(module, exports) {
 
- // shim for using process in browser
 
- var process = module.exports = {};
 
- // cached from whatever global is present so that test runners that stub it
 
- // don't break things.  But we need to wrap it in a try catch in case it is
 
- // wrapped in strict mode code which doesn't define any globals.  It's inside a
 
- // function because try/catches deoptimize in certain engines.
 
- var cachedSetTimeout;
 
- var cachedClearTimeout;
 
- function defaultSetTimout() {
 
-     throw new Error('setTimeout has not been defined');
 
- }
 
- function defaultClearTimeout () {
 
-     throw new Error('clearTimeout has not been defined');
 
- }
 
- (function () {
 
-     try {
 
-         if (typeof setTimeout === 'function') {
 
-             cachedSetTimeout = setTimeout;
 
-         } else {
 
-             cachedSetTimeout = defaultSetTimout;
 
-         }
 
-     } catch (e) {
 
-         cachedSetTimeout = defaultSetTimout;
 
-     }
 
-     try {
 
-         if (typeof clearTimeout === 'function') {
 
-             cachedClearTimeout = clearTimeout;
 
-         } else {
 
-             cachedClearTimeout = defaultClearTimeout;
 
-         }
 
-     } catch (e) {
 
-         cachedClearTimeout = defaultClearTimeout;
 
-     }
 
- } ())
 
- function runTimeout(fun) {
 
-     if (cachedSetTimeout === setTimeout) {
 
-         //normal enviroments in sane situations
 
-         return setTimeout(fun, 0);
 
-     }
 
-     // if setTimeout wasn't available but was latter defined
 
-     if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
 
-         cachedSetTimeout = setTimeout;
 
-         return setTimeout(fun, 0);
 
-     }
 
-     try {
 
-         // when when somebody has screwed with setTimeout but no I.E. maddness
 
-         return cachedSetTimeout(fun, 0);
 
-     } catch(e){
 
-         try {
 
-             // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
 
-             return cachedSetTimeout.call(null, fun, 0);
 
-         } catch(e){
 
-             // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
 
-             return cachedSetTimeout.call(this, fun, 0);
 
-         }
 
-     }
 
- }
 
- function runClearTimeout(marker) {
 
-     if (cachedClearTimeout === clearTimeout) {
 
-         //normal enviroments in sane situations
 
-         return clearTimeout(marker);
 
-     }
 
-     // if clearTimeout wasn't available but was latter defined
 
-     if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
 
-         cachedClearTimeout = clearTimeout;
 
-         return clearTimeout(marker);
 
-     }
 
-     try {
 
-         // when when somebody has screwed with setTimeout but no I.E. maddness
 
-         return cachedClearTimeout(marker);
 
-     } catch (e){
 
-         try {
 
-             // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally
 
-             return cachedClearTimeout.call(null, marker);
 
-         } catch (e){
 
-             // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
 
-             // Some versions of I.E. have different rules for clearTimeout vs setTimeout
 
-             return cachedClearTimeout.call(this, marker);
 
-         }
 
-     }
 
- }
 
- var queue = [];
 
- var draining = false;
 
- var currentQueue;
 
- var queueIndex = -1;
 
- function cleanUpNextTick() {
 
-     if (!draining || !currentQueue) {
 
-         return;
 
-     }
 
-     draining = false;
 
-     if (currentQueue.length) {
 
-         queue = currentQueue.concat(queue);
 
-     } else {
 
-         queueIndex = -1;
 
-     }
 
-     if (queue.length) {
 
-         drainQueue();
 
-     }
 
- }
 
- function drainQueue() {
 
-     if (draining) {
 
-         return;
 
-     }
 
-     var timeout = runTimeout(cleanUpNextTick);
 
-     draining = true;
 
-     var len = queue.length;
 
-     while(len) {
 
-         currentQueue = queue;
 
-         queue = [];
 
-         while (++queueIndex < len) {
 
-             if (currentQueue) {
 
-                 currentQueue[queueIndex].run();
 
-             }
 
-         }
 
-         queueIndex = -1;
 
-         len = queue.length;
 
-     }
 
-     currentQueue = null;
 
-     draining = false;
 
-     runClearTimeout(timeout);
 
- }
 
- process.nextTick = function (fun) {
 
-     var args = new Array(arguments.length - 1);
 
-     if (arguments.length > 1) {
 
-         for (var i = 1; i < arguments.length; i++) {
 
-             args[i - 1] = arguments[i];
 
-         }
 
-     }
 
-     queue.push(new Item(fun, args));
 
-     if (queue.length === 1 && !draining) {
 
-         runTimeout(drainQueue);
 
-     }
 
- };
 
- // v8 likes predictible objects
 
- function Item(fun, array) {
 
-     this.fun = fun;
 
-     this.array = array;
 
- }
 
- Item.prototype.run = function () {
 
-     this.fun.apply(null, this.array);
 
- };
 
- process.title = 'browser';
 
- process.browser = true;
 
- process.env = {};
 
- process.argv = [];
 
- process.version = ''; // empty string to avoid regexp issues
 
- process.versions = {};
 
- function noop() {}
 
- process.on = noop;
 
- process.addListener = noop;
 
- process.once = noop;
 
- process.off = noop;
 
- process.removeListener = noop;
 
- process.removeAllListeners = noop;
 
- process.emit = noop;
 
- process.prependListener = noop;
 
- process.prependOnceListener = noop;
 
- process.listeners = function (name) { return [] }
 
- process.binding = function (name) {
 
-     throw new Error('process.binding is not supported');
 
- };
 
- process.cwd = function () { return '/' };
 
- process.chdir = function (dir) {
 
-     throw new Error('process.chdir is not supported');
 
- };
 
- process.umask = function() { return 0; };
 
- /***/ }),
 
- /* 2 */
 
- /***/ (function(module, exports) {
 
- if (typeof Object.create === 'function') {
 
-   // implementation from standard node.js 'util' module
 
-   module.exports = function inherits(ctor, superCtor) {
 
-     ctor.super_ = superCtor
 
-     ctor.prototype = Object.create(superCtor.prototype, {
 
-       constructor: {
 
-         value: ctor,
 
-         enumerable: false,
 
-         writable: true,
 
-         configurable: true
 
-       }
 
-     });
 
-   };
 
- } else {
 
-   // old school shim for old browsers
 
-   module.exports = function inherits(ctor, superCtor) {
 
-     ctor.super_ = superCtor
 
-     var TempCtor = function () {}
 
-     TempCtor.prototype = superCtor.prototype
 
-     ctor.prototype = new TempCtor()
 
-     ctor.prototype.constructor = ctor
 
-   }
 
- }
 
- /***/ }),
 
- /* 3 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- "use strict";
 
- /* WEBPACK VAR INJECTION */(function(global) {/*!
 
-  * The buffer module from node.js, for the browser.
 
-  *
 
-  * @author   Feross Aboukhadijeh <http://feross.org>
 
-  * @license  MIT
 
-  */
 
- /* eslint-disable no-proto */
 
- var base64 = __webpack_require__(23)
 
- var ieee754 = __webpack_require__(24)
 
- var isArray = __webpack_require__(10)
 
- exports.Buffer = Buffer
 
- exports.SlowBuffer = SlowBuffer
 
- exports.INSPECT_MAX_BYTES = 50
 
- /**
 
-  * If `Buffer.TYPED_ARRAY_SUPPORT`:
 
-  *   === true    Use Uint8Array implementation (fastest)
 
-  *   === false   Use Object implementation (most compatible, even IE6)
 
-  *
 
-  * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
 
-  * Opera 11.6+, iOS 4.2+.
 
-  *
 
-  * Due to various browser bugs, sometimes the Object implementation will be used even
 
-  * when the browser supports typed arrays.
 
-  *
 
-  * Note:
 
-  *
 
-  *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
 
-  *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
 
-  *
 
-  *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
 
-  *
 
-  *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
 
-  *     incorrect length in some situations.
 
-  * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
 
-  * get the Object implementation, which is slower but behaves correctly.
 
-  */
 
- Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined
 
-   ? global.TYPED_ARRAY_SUPPORT
 
-   : typedArraySupport()
 
- /*
 
-  * Export kMaxLength after typed array support is determined.
 
-  */
 
- exports.kMaxLength = kMaxLength()
 
- function typedArraySupport () {
 
-   try {
 
-     var arr = new Uint8Array(1)
 
-     arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
 
-     return arr.foo() === 42 && // typed array instances can be augmented
 
-         typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`
 
-         arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`
 
-   } catch (e) {
 
-     return false
 
-   }
 
- }
 
- function kMaxLength () {
 
-   return Buffer.TYPED_ARRAY_SUPPORT
 
-     ? 0x7fffffff
 
-     : 0x3fffffff
 
- }
 
- function createBuffer (that, length) {
 
-   if (kMaxLength() < length) {
 
-     throw new RangeError('Invalid typed array length')
 
-   }
 
-   if (Buffer.TYPED_ARRAY_SUPPORT) {
 
-     // Return an augmented `Uint8Array` instance, for best performance
 
-     that = new Uint8Array(length)
 
-     that.__proto__ = Buffer.prototype
 
-   } else {
 
-     // Fallback: Return an object instance of the Buffer class
 
-     if (that === null) {
 
-       that = new Buffer(length)
 
-     }
 
-     that.length = length
 
-   }
 
-   return that
 
- }
 
- /**
 
-  * The Buffer constructor returns instances of `Uint8Array` that have their
 
-  * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
 
-  * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
 
-  * and the `Uint8Array` methods. Square bracket notation works as expected -- it
 
-  * returns a single octet.
 
-  *
 
-  * The `Uint8Array` prototype remains unmodified.
 
-  */
 
- function Buffer (arg, encodingOrOffset, length) {
 
-   if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {
 
-     return new Buffer(arg, encodingOrOffset, length)
 
-   }
 
-   // Common case.
 
-   if (typeof arg === 'number') {
 
-     if (typeof encodingOrOffset === 'string') {
 
-       throw new Error(
 
-         'If encoding is specified then the first argument must be a string'
 
-       )
 
-     }
 
-     return allocUnsafe(this, arg)
 
-   }
 
-   return from(this, arg, encodingOrOffset, length)
 
- }
 
- Buffer.poolSize = 8192 // not used by this implementation
 
- // TODO: Legacy, not needed anymore. Remove in next major version.
 
- Buffer._augment = function (arr) {
 
-   arr.__proto__ = Buffer.prototype
 
-   return arr
 
- }
 
- function from (that, value, encodingOrOffset, length) {
 
-   if (typeof value === 'number') {
 
-     throw new TypeError('"value" argument must not be a number')
 
-   }
 
-   if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
 
-     return fromArrayBuffer(that, value, encodingOrOffset, length)
 
-   }
 
-   if (typeof value === 'string') {
 
-     return fromString(that, value, encodingOrOffset)
 
-   }
 
-   return fromObject(that, value)
 
- }
 
- /**
 
-  * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
 
-  * if value is a number.
 
-  * Buffer.from(str[, encoding])
 
-  * Buffer.from(array)
 
-  * Buffer.from(buffer)
 
-  * Buffer.from(arrayBuffer[, byteOffset[, length]])
 
-  **/
 
- Buffer.from = function (value, encodingOrOffset, length) {
 
-   return from(null, value, encodingOrOffset, length)
 
- }
 
- if (Buffer.TYPED_ARRAY_SUPPORT) {
 
-   Buffer.prototype.__proto__ = Uint8Array.prototype
 
-   Buffer.__proto__ = Uint8Array
 
-   if (typeof Symbol !== 'undefined' && Symbol.species &&
 
-       Buffer[Symbol.species] === Buffer) {
 
-     // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
 
-     Object.defineProperty(Buffer, Symbol.species, {
 
-       value: null,
 
-       configurable: true
 
-     })
 
-   }
 
- }
 
- function assertSize (size) {
 
-   if (typeof size !== 'number') {
 
-     throw new TypeError('"size" argument must be a number')
 
-   } else if (size < 0) {
 
-     throw new RangeError('"size" argument must not be negative')
 
-   }
 
- }
 
- function alloc (that, size, fill, encoding) {
 
-   assertSize(size)
 
-   if (size <= 0) {
 
-     return createBuffer(that, size)
 
-   }
 
-   if (fill !== undefined) {
 
-     // Only pay attention to encoding if it's a string. This
 
-     // prevents accidentally sending in a number that would
 
-     // be interpretted as a start offset.
 
-     return typeof encoding === 'string'
 
-       ? createBuffer(that, size).fill(fill, encoding)
 
-       : createBuffer(that, size).fill(fill)
 
-   }
 
-   return createBuffer(that, size)
 
- }
 
- /**
 
-  * Creates a new filled Buffer instance.
 
-  * alloc(size[, fill[, encoding]])
 
-  **/
 
- Buffer.alloc = function (size, fill, encoding) {
 
-   return alloc(null, size, fill, encoding)
 
- }
 
- function allocUnsafe (that, size) {
 
-   assertSize(size)
 
-   that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)
 
-   if (!Buffer.TYPED_ARRAY_SUPPORT) {
 
-     for (var i = 0; i < size; ++i) {
 
-       that[i] = 0
 
-     }
 
-   }
 
-   return that
 
- }
 
- /**
 
-  * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
 
-  * */
 
- Buffer.allocUnsafe = function (size) {
 
-   return allocUnsafe(null, size)
 
- }
 
- /**
 
-  * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
 
-  */
 
- Buffer.allocUnsafeSlow = function (size) {
 
-   return allocUnsafe(null, size)
 
- }
 
- function fromString (that, string, encoding) {
 
-   if (typeof encoding !== 'string' || encoding === '') {
 
-     encoding = 'utf8'
 
-   }
 
-   if (!Buffer.isEncoding(encoding)) {
 
-     throw new TypeError('"encoding" must be a valid string encoding')
 
-   }
 
-   var length = byteLength(string, encoding) | 0
 
-   that = createBuffer(that, length)
 
-   var actual = that.write(string, encoding)
 
-   if (actual !== length) {
 
-     // Writing a hex string, for example, that contains invalid characters will
 
-     // cause everything after the first invalid character to be ignored. (e.g.
 
-     // 'abxxcd' will be treated as 'ab')
 
-     that = that.slice(0, actual)
 
-   }
 
-   return that
 
- }
 
- function fromArrayLike (that, array) {
 
-   var length = array.length < 0 ? 0 : checked(array.length) | 0
 
-   that = createBuffer(that, length)
 
-   for (var i = 0; i < length; i += 1) {
 
-     that[i] = array[i] & 255
 
-   }
 
-   return that
 
- }
 
- function fromArrayBuffer (that, array, byteOffset, length) {
 
-   array.byteLength // this throws if `array` is not a valid ArrayBuffer
 
-   if (byteOffset < 0 || array.byteLength < byteOffset) {
 
-     throw new RangeError('\'offset\' is out of bounds')
 
-   }
 
-   if (array.byteLength < byteOffset + (length || 0)) {
 
-     throw new RangeError('\'length\' is out of bounds')
 
-   }
 
-   if (byteOffset === undefined && length === undefined) {
 
-     array = new Uint8Array(array)
 
-   } else if (length === undefined) {
 
-     array = new Uint8Array(array, byteOffset)
 
-   } else {
 
-     array = new Uint8Array(array, byteOffset, length)
 
-   }
 
-   if (Buffer.TYPED_ARRAY_SUPPORT) {
 
-     // Return an augmented `Uint8Array` instance, for best performance
 
-     that = array
 
-     that.__proto__ = Buffer.prototype
 
-   } else {
 
-     // Fallback: Return an object instance of the Buffer class
 
-     that = fromArrayLike(that, array)
 
-   }
 
-   return that
 
- }
 
- function fromObject (that, obj) {
 
-   if (Buffer.isBuffer(obj)) {
 
-     var len = checked(obj.length) | 0
 
-     that = createBuffer(that, len)
 
-     if (that.length === 0) {
 
-       return that
 
-     }
 
-     obj.copy(that, 0, 0, len)
 
-     return that
 
-   }
 
-   if (obj) {
 
-     if ((typeof ArrayBuffer !== 'undefined' &&
 
-         obj.buffer instanceof ArrayBuffer) || 'length' in obj) {
 
-       if (typeof obj.length !== 'number' || isnan(obj.length)) {
 
-         return createBuffer(that, 0)
 
-       }
 
-       return fromArrayLike(that, obj)
 
-     }
 
-     if (obj.type === 'Buffer' && isArray(obj.data)) {
 
-       return fromArrayLike(that, obj.data)
 
-     }
 
-   }
 
-   throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
 
- }
 
- function checked (length) {
 
-   // Note: cannot use `length < kMaxLength()` here because that fails when
 
-   // length is NaN (which is otherwise coerced to zero.)
 
-   if (length >= kMaxLength()) {
 
-     throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
 
-                          'size: 0x' + kMaxLength().toString(16) + ' bytes')
 
-   }
 
-   return length | 0
 
- }
 
- function SlowBuffer (length) {
 
-   if (+length != length) { // eslint-disable-line eqeqeq
 
-     length = 0
 
-   }
 
-   return Buffer.alloc(+length)
 
- }
 
- Buffer.isBuffer = function isBuffer (b) {
 
-   return !!(b != null && b._isBuffer)
 
- }
 
- Buffer.compare = function compare (a, b) {
 
-   if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
 
-     throw new TypeError('Arguments must be Buffers')
 
-   }
 
-   if (a === b) return 0
 
-   var x = a.length
 
-   var y = b.length
 
-   for (var i = 0, len = Math.min(x, y); i < len; ++i) {
 
-     if (a[i] !== b[i]) {
 
-       x = a[i]
 
-       y = b[i]
 
-       break
 
-     }
 
-   }
 
-   if (x < y) return -1
 
-   if (y < x) return 1
 
-   return 0
 
- }
 
- Buffer.isEncoding = function isEncoding (encoding) {
 
-   switch (String(encoding).toLowerCase()) {
 
-     case 'hex':
 
-     case 'utf8':
 
-     case 'utf-8':
 
-     case 'ascii':
 
-     case 'latin1':
 
-     case 'binary':
 
-     case 'base64':
 
-     case 'ucs2':
 
-     case 'ucs-2':
 
-     case 'utf16le':
 
-     case 'utf-16le':
 
-       return true
 
-     default:
 
-       return false
 
-   }
 
- }
 
- Buffer.concat = function concat (list, length) {
 
-   if (!isArray(list)) {
 
-     throw new TypeError('"list" argument must be an Array of Buffers')
 
-   }
 
-   if (list.length === 0) {
 
-     return Buffer.alloc(0)
 
-   }
 
-   var i
 
-   if (length === undefined) {
 
-     length = 0
 
-     for (i = 0; i < list.length; ++i) {
 
-       length += list[i].length
 
-     }
 
-   }
 
-   var buffer = Buffer.allocUnsafe(length)
 
-   var pos = 0
 
-   for (i = 0; i < list.length; ++i) {
 
-     var buf = list[i]
 
-     if (!Buffer.isBuffer(buf)) {
 
-       throw new TypeError('"list" argument must be an Array of Buffers')
 
-     }
 
-     buf.copy(buffer, pos)
 
-     pos += buf.length
 
-   }
 
-   return buffer
 
- }
 
- function byteLength (string, encoding) {
 
-   if (Buffer.isBuffer(string)) {
 
-     return string.length
 
-   }
 
-   if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&
 
-       (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {
 
-     return string.byteLength
 
-   }
 
-   if (typeof string !== 'string') {
 
-     string = '' + string
 
-   }
 
-   var len = string.length
 
-   if (len === 0) return 0
 
-   // Use a for loop to avoid recursion
 
-   var loweredCase = false
 
-   for (;;) {
 
-     switch (encoding) {
 
-       case 'ascii':
 
-       case 'latin1':
 
-       case 'binary':
 
-         return len
 
-       case 'utf8':
 
-       case 'utf-8':
 
-       case undefined:
 
-         return utf8ToBytes(string).length
 
-       case 'ucs2':
 
-       case 'ucs-2':
 
-       case 'utf16le':
 
-       case 'utf-16le':
 
-         return len * 2
 
-       case 'hex':
 
-         return len >>> 1
 
-       case 'base64':
 
-         return base64ToBytes(string).length
 
-       default:
 
-         if (loweredCase) return utf8ToBytes(string).length // assume utf8
 
-         encoding = ('' + encoding).toLowerCase()
 
-         loweredCase = true
 
-     }
 
-   }
 
- }
 
- Buffer.byteLength = byteLength
 
- function slowToString (encoding, start, end) {
 
-   var loweredCase = false
 
-   // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
 
-   // property of a typed array.
 
-   // This behaves neither like String nor Uint8Array in that we set start/end
 
-   // to their upper/lower bounds if the value passed is out of range.
 
-   // undefined is handled specially as per ECMA-262 6th Edition,
 
-   // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
 
-   if (start === undefined || start < 0) {
 
-     start = 0
 
-   }
 
-   // Return early if start > this.length. Done here to prevent potential uint32
 
-   // coercion fail below.
 
-   if (start > this.length) {
 
-     return ''
 
-   }
 
-   if (end === undefined || end > this.length) {
 
-     end = this.length
 
-   }
 
-   if (end <= 0) {
 
-     return ''
 
-   }
 
-   // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
 
-   end >>>= 0
 
-   start >>>= 0
 
-   if (end <= start) {
 
-     return ''
 
-   }
 
-   if (!encoding) encoding = 'utf8'
 
-   while (true) {
 
-     switch (encoding) {
 
-       case 'hex':
 
-         return hexSlice(this, start, end)
 
-       case 'utf8':
 
-       case 'utf-8':
 
-         return utf8Slice(this, start, end)
 
-       case 'ascii':
 
-         return asciiSlice(this, start, end)
 
-       case 'latin1':
 
-       case 'binary':
 
-         return latin1Slice(this, start, end)
 
-       case 'base64':
 
-         return base64Slice(this, start, end)
 
-       case 'ucs2':
 
-       case 'ucs-2':
 
-       case 'utf16le':
 
-       case 'utf-16le':
 
-         return utf16leSlice(this, start, end)
 
-       default:
 
-         if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
 
-         encoding = (encoding + '').toLowerCase()
 
-         loweredCase = true
 
-     }
 
-   }
 
- }
 
- // The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect
 
- // Buffer instances.
 
- Buffer.prototype._isBuffer = true
 
- function swap (b, n, m) {
 
-   var i = b[n]
 
-   b[n] = b[m]
 
-   b[m] = i
 
- }
 
- Buffer.prototype.swap16 = function swap16 () {
 
-   var len = this.length
 
-   if (len % 2 !== 0) {
 
-     throw new RangeError('Buffer size must be a multiple of 16-bits')
 
-   }
 
-   for (var i = 0; i < len; i += 2) {
 
-     swap(this, i, i + 1)
 
-   }
 
-   return this
 
- }
 
- Buffer.prototype.swap32 = function swap32 () {
 
-   var len = this.length
 
-   if (len % 4 !== 0) {
 
-     throw new RangeError('Buffer size must be a multiple of 32-bits')
 
-   }
 
-   for (var i = 0; i < len; i += 4) {
 
-     swap(this, i, i + 3)
 
-     swap(this, i + 1, i + 2)
 
-   }
 
-   return this
 
- }
 
- Buffer.prototype.swap64 = function swap64 () {
 
-   var len = this.length
 
-   if (len % 8 !== 0) {
 
-     throw new RangeError('Buffer size must be a multiple of 64-bits')
 
-   }
 
-   for (var i = 0; i < len; i += 8) {
 
-     swap(this, i, i + 7)
 
-     swap(this, i + 1, i + 6)
 
-     swap(this, i + 2, i + 5)
 
-     swap(this, i + 3, i + 4)
 
-   }
 
-   return this
 
- }
 
- Buffer.prototype.toString = function toString () {
 
-   var length = this.length | 0
 
-   if (length === 0) return ''
 
-   if (arguments.length === 0) return utf8Slice(this, 0, length)
 
-   return slowToString.apply(this, arguments)
 
- }
 
- Buffer.prototype.equals = function equals (b) {
 
-   if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
 
-   if (this === b) return true
 
-   return Buffer.compare(this, b) === 0
 
- }
 
- Buffer.prototype.inspect = function inspect () {
 
-   var str = ''
 
-   var max = exports.INSPECT_MAX_BYTES
 
-   if (this.length > 0) {
 
-     str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
 
-     if (this.length > max) str += ' ... '
 
-   }
 
-   return '<Buffer ' + str + '>'
 
- }
 
- Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
 
-   if (!Buffer.isBuffer(target)) {
 
-     throw new TypeError('Argument must be a Buffer')
 
-   }
 
-   if (start === undefined) {
 
-     start = 0
 
-   }
 
-   if (end === undefined) {
 
-     end = target ? target.length : 0
 
-   }
 
-   if (thisStart === undefined) {
 
-     thisStart = 0
 
-   }
 
-   if (thisEnd === undefined) {
 
-     thisEnd = this.length
 
-   }
 
-   if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
 
-     throw new RangeError('out of range index')
 
-   }
 
-   if (thisStart >= thisEnd && start >= end) {
 
-     return 0
 
-   }
 
-   if (thisStart >= thisEnd) {
 
-     return -1
 
-   }
 
-   if (start >= end) {
 
-     return 1
 
-   }
 
-   start >>>= 0
 
-   end >>>= 0
 
-   thisStart >>>= 0
 
-   thisEnd >>>= 0
 
-   if (this === target) return 0
 
-   var x = thisEnd - thisStart
 
-   var y = end - start
 
-   var len = Math.min(x, y)
 
-   var thisCopy = this.slice(thisStart, thisEnd)
 
-   var targetCopy = target.slice(start, end)
 
-   for (var i = 0; i < len; ++i) {
 
-     if (thisCopy[i] !== targetCopy[i]) {
 
-       x = thisCopy[i]
 
-       y = targetCopy[i]
 
-       break
 
-     }
 
-   }
 
-   if (x < y) return -1
 
-   if (y < x) return 1
 
-   return 0
 
- }
 
- // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
 
- // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
 
- //
 
- // Arguments:
 
- // - buffer - a Buffer to search
 
- // - val - a string, Buffer, or number
 
- // - byteOffset - an index into `buffer`; will be clamped to an int32
 
- // - encoding - an optional encoding, relevant is val is a string
 
- // - dir - true for indexOf, false for lastIndexOf
 
- function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
 
-   // Empty buffer means no match
 
-   if (buffer.length === 0) return -1
 
-   // Normalize byteOffset
 
-   if (typeof byteOffset === 'string') {
 
-     encoding = byteOffset
 
-     byteOffset = 0
 
-   } else if (byteOffset > 0x7fffffff) {
 
-     byteOffset = 0x7fffffff
 
-   } else if (byteOffset < -0x80000000) {
 
-     byteOffset = -0x80000000
 
-   }
 
-   byteOffset = +byteOffset  // Coerce to Number.
 
-   if (isNaN(byteOffset)) {
 
-     // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
 
-     byteOffset = dir ? 0 : (buffer.length - 1)
 
-   }
 
-   // Normalize byteOffset: negative offsets start from the end of the buffer
 
-   if (byteOffset < 0) byteOffset = buffer.length + byteOffset
 
-   if (byteOffset >= buffer.length) {
 
-     if (dir) return -1
 
-     else byteOffset = buffer.length - 1
 
-   } else if (byteOffset < 0) {
 
-     if (dir) byteOffset = 0
 
-     else return -1
 
-   }
 
-   // Normalize val
 
-   if (typeof val === 'string') {
 
-     val = Buffer.from(val, encoding)
 
-   }
 
-   // Finally, search either indexOf (if dir is true) or lastIndexOf
 
-   if (Buffer.isBuffer(val)) {
 
-     // Special case: looking for empty string/buffer always fails
 
-     if (val.length === 0) {
 
-       return -1
 
-     }
 
-     return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
 
-   } else if (typeof val === 'number') {
 
-     val = val & 0xFF // Search for a byte value [0-255]
 
-     if (Buffer.TYPED_ARRAY_SUPPORT &&
 
-         typeof Uint8Array.prototype.indexOf === 'function') {
 
-       if (dir) {
 
-         return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
 
-       } else {
 
-         return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
 
-       }
 
-     }
 
-     return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
 
-   }
 
-   throw new TypeError('val must be string, number or Buffer')
 
- }
 
- function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
 
-   var indexSize = 1
 
-   var arrLength = arr.length
 
-   var valLength = val.length
 
-   if (encoding !== undefined) {
 
-     encoding = String(encoding).toLowerCase()
 
-     if (encoding === 'ucs2' || encoding === 'ucs-2' ||
 
-         encoding === 'utf16le' || encoding === 'utf-16le') {
 
-       if (arr.length < 2 || val.length < 2) {
 
-         return -1
 
-       }
 
-       indexSize = 2
 
-       arrLength /= 2
 
-       valLength /= 2
 
-       byteOffset /= 2
 
-     }
 
-   }
 
-   function read (buf, i) {
 
-     if (indexSize === 1) {
 
-       return buf[i]
 
-     } else {
 
-       return buf.readUInt16BE(i * indexSize)
 
-     }
 
-   }
 
-   var i
 
-   if (dir) {
 
-     var foundIndex = -1
 
-     for (i = byteOffset; i < arrLength; i++) {
 
-       if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
 
-         if (foundIndex === -1) foundIndex = i
 
-         if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
 
-       } else {
 
-         if (foundIndex !== -1) i -= i - foundIndex
 
-         foundIndex = -1
 
-       }
 
-     }
 
-   } else {
 
-     if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
 
-     for (i = byteOffset; i >= 0; i--) {
 
-       var found = true
 
-       for (var j = 0; j < valLength; j++) {
 
-         if (read(arr, i + j) !== read(val, j)) {
 
-           found = false
 
-           break
 
-         }
 
-       }
 
-       if (found) return i
 
-     }
 
-   }
 
-   return -1
 
- }
 
- Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
 
-   return this.indexOf(val, byteOffset, encoding) !== -1
 
- }
 
- Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
 
-   return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
 
- }
 
- Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
 
-   return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
 
- }
 
- function hexWrite (buf, string, offset, length) {
 
-   offset = Number(offset) || 0
 
-   var remaining = buf.length - offset
 
-   if (!length) {
 
-     length = remaining
 
-   } else {
 
-     length = Number(length)
 
-     if (length > remaining) {
 
-       length = remaining
 
-     }
 
-   }
 
-   // must be an even number of digits
 
-   var strLen = string.length
 
-   if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
 
-   if (length > strLen / 2) {
 
-     length = strLen / 2
 
-   }
 
-   for (var i = 0; i < length; ++i) {
 
-     var parsed = parseInt(string.substr(i * 2, 2), 16)
 
-     if (isNaN(parsed)) return i
 
-     buf[offset + i] = parsed
 
-   }
 
-   return i
 
- }
 
- function utf8Write (buf, string, offset, length) {
 
-   return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
 
- }
 
- function asciiWrite (buf, string, offset, length) {
 
-   return blitBuffer(asciiToBytes(string), buf, offset, length)
 
- }
 
- function latin1Write (buf, string, offset, length) {
 
-   return asciiWrite(buf, string, offset, length)
 
- }
 
- function base64Write (buf, string, offset, length) {
 
-   return blitBuffer(base64ToBytes(string), buf, offset, length)
 
- }
 
- function ucs2Write (buf, string, offset, length) {
 
-   return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
 
- }
 
- Buffer.prototype.write = function write (string, offset, length, encoding) {
 
-   // Buffer#write(string)
 
-   if (offset === undefined) {
 
-     encoding = 'utf8'
 
-     length = this.length
 
-     offset = 0
 
-   // Buffer#write(string, encoding)
 
-   } else if (length === undefined && typeof offset === 'string') {
 
-     encoding = offset
 
-     length = this.length
 
-     offset = 0
 
-   // Buffer#write(string, offset[, length][, encoding])
 
-   } else if (isFinite(offset)) {
 
-     offset = offset | 0
 
-     if (isFinite(length)) {
 
-       length = length | 0
 
-       if (encoding === undefined) encoding = 'utf8'
 
-     } else {
 
-       encoding = length
 
-       length = undefined
 
-     }
 
-   // legacy write(string, encoding, offset, length) - remove in v0.13
 
-   } else {
 
-     throw new Error(
 
-       'Buffer.write(string, encoding, offset[, length]) is no longer supported'
 
-     )
 
-   }
 
-   var remaining = this.length - offset
 
-   if (length === undefined || length > remaining) length = remaining
 
-   if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
 
-     throw new RangeError('Attempt to write outside buffer bounds')
 
-   }
 
-   if (!encoding) encoding = 'utf8'
 
-   var loweredCase = false
 
-   for (;;) {
 
-     switch (encoding) {
 
-       case 'hex':
 
-         return hexWrite(this, string, offset, length)
 
-       case 'utf8':
 
-       case 'utf-8':
 
-         return utf8Write(this, string, offset, length)
 
-       case 'ascii':
 
-         return asciiWrite(this, string, offset, length)
 
-       case 'latin1':
 
-       case 'binary':
 
-         return latin1Write(this, string, offset, length)
 
-       case 'base64':
 
-         // Warning: maxLength not taken into account in base64Write
 
-         return base64Write(this, string, offset, length)
 
-       case 'ucs2':
 
-       case 'ucs-2':
 
-       case 'utf16le':
 
-       case 'utf-16le':
 
-         return ucs2Write(this, string, offset, length)
 
-       default:
 
-         if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
 
-         encoding = ('' + encoding).toLowerCase()
 
-         loweredCase = true
 
-     }
 
-   }
 
- }
 
- Buffer.prototype.toJSON = function toJSON () {
 
-   return {
 
-     type: 'Buffer',
 
-     data: Array.prototype.slice.call(this._arr || this, 0)
 
-   }
 
- }
 
- function base64Slice (buf, start, end) {
 
-   if (start === 0 && end === buf.length) {
 
-     return base64.fromByteArray(buf)
 
-   } else {
 
-     return base64.fromByteArray(buf.slice(start, end))
 
-   }
 
- }
 
- function utf8Slice (buf, start, end) {
 
-   end = Math.min(buf.length, end)
 
-   var res = []
 
-   var i = start
 
-   while (i < end) {
 
-     var firstByte = buf[i]
 
-     var codePoint = null
 
-     var bytesPerSequence = (firstByte > 0xEF) ? 4
 
-       : (firstByte > 0xDF) ? 3
 
-       : (firstByte > 0xBF) ? 2
 
-       : 1
 
-     if (i + bytesPerSequence <= end) {
 
-       var secondByte, thirdByte, fourthByte, tempCodePoint
 
-       switch (bytesPerSequence) {
 
-         case 1:
 
-           if (firstByte < 0x80) {
 
-             codePoint = firstByte
 
-           }
 
-           break
 
-         case 2:
 
-           secondByte = buf[i + 1]
 
-           if ((secondByte & 0xC0) === 0x80) {
 
-             tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
 
-             if (tempCodePoint > 0x7F) {
 
-               codePoint = tempCodePoint
 
-             }
 
-           }
 
-           break
 
-         case 3:
 
-           secondByte = buf[i + 1]
 
-           thirdByte = buf[i + 2]
 
-           if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
 
-             tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
 
-             if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
 
-               codePoint = tempCodePoint
 
-             }
 
-           }
 
-           break
 
-         case 4:
 
-           secondByte = buf[i + 1]
 
-           thirdByte = buf[i + 2]
 
-           fourthByte = buf[i + 3]
 
-           if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
 
-             tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
 
-             if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
 
-               codePoint = tempCodePoint
 
-             }
 
-           }
 
-       }
 
-     }
 
-     if (codePoint === null) {
 
-       // we did not generate a valid codePoint so insert a
 
-       // replacement char (U+FFFD) and advance only 1 byte
 
-       codePoint = 0xFFFD
 
-       bytesPerSequence = 1
 
-     } else if (codePoint > 0xFFFF) {
 
-       // encode to utf16 (surrogate pair dance)
 
-       codePoint -= 0x10000
 
-       res.push(codePoint >>> 10 & 0x3FF | 0xD800)
 
-       codePoint = 0xDC00 | codePoint & 0x3FF
 
-     }
 
-     res.push(codePoint)
 
-     i += bytesPerSequence
 
-   }
 
-   return decodeCodePointsArray(res)
 
- }
 
- // Based on http://stackoverflow.com/a/22747272/680742, the browser with
 
- // the lowest limit is Chrome, with 0x10000 args.
 
- // We go 1 magnitude less, for safety
 
- var MAX_ARGUMENTS_LENGTH = 0x1000
 
- function decodeCodePointsArray (codePoints) {
 
-   var len = codePoints.length
 
-   if (len <= MAX_ARGUMENTS_LENGTH) {
 
-     return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
 
-   }
 
-   // Decode in chunks to avoid "call stack size exceeded".
 
-   var res = ''
 
-   var i = 0
 
-   while (i < len) {
 
-     res += String.fromCharCode.apply(
 
-       String,
 
-       codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
 
-     )
 
-   }
 
-   return res
 
- }
 
- function asciiSlice (buf, start, end) {
 
-   var ret = ''
 
-   end = Math.min(buf.length, end)
 
-   for (var i = start; i < end; ++i) {
 
-     ret += String.fromCharCode(buf[i] & 0x7F)
 
-   }
 
-   return ret
 
- }
 
- function latin1Slice (buf, start, end) {
 
-   var ret = ''
 
-   end = Math.min(buf.length, end)
 
-   for (var i = start; i < end; ++i) {
 
-     ret += String.fromCharCode(buf[i])
 
-   }
 
-   return ret
 
- }
 
- function hexSlice (buf, start, end) {
 
-   var len = buf.length
 
-   if (!start || start < 0) start = 0
 
-   if (!end || end < 0 || end > len) end = len
 
-   var out = ''
 
-   for (var i = start; i < end; ++i) {
 
-     out += toHex(buf[i])
 
-   }
 
-   return out
 
- }
 
- function utf16leSlice (buf, start, end) {
 
-   var bytes = buf.slice(start, end)
 
-   var res = ''
 
-   for (var i = 0; i < bytes.length; i += 2) {
 
-     res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)
 
-   }
 
-   return res
 
- }
 
- Buffer.prototype.slice = function slice (start, end) {
 
-   var len = this.length
 
-   start = ~~start
 
-   end = end === undefined ? len : ~~end
 
-   if (start < 0) {
 
-     start += len
 
-     if (start < 0) start = 0
 
-   } else if (start > len) {
 
-     start = len
 
-   }
 
-   if (end < 0) {
 
-     end += len
 
-     if (end < 0) end = 0
 
-   } else if (end > len) {
 
-     end = len
 
-   }
 
-   if (end < start) end = start
 
-   var newBuf
 
-   if (Buffer.TYPED_ARRAY_SUPPORT) {
 
-     newBuf = this.subarray(start, end)
 
-     newBuf.__proto__ = Buffer.prototype
 
-   } else {
 
-     var sliceLen = end - start
 
-     newBuf = new Buffer(sliceLen, undefined)
 
-     for (var i = 0; i < sliceLen; ++i) {
 
-       newBuf[i] = this[i + start]
 
-     }
 
-   }
 
-   return newBuf
 
- }
 
- /*
 
-  * Need to make sure that buffer isn't trying to write out of bounds.
 
-  */
 
- function checkOffset (offset, ext, length) {
 
-   if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
 
-   if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
 
- }
 
- Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
 
-   offset = offset | 0
 
-   byteLength = byteLength | 0
 
-   if (!noAssert) checkOffset(offset, byteLength, this.length)
 
-   var val = this[offset]
 
-   var mul = 1
 
-   var i = 0
 
-   while (++i < byteLength && (mul *= 0x100)) {
 
-     val += this[offset + i] * mul
 
-   }
 
-   return val
 
- }
 
- Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
 
-   offset = offset | 0
 
-   byteLength = byteLength | 0
 
-   if (!noAssert) {
 
-     checkOffset(offset, byteLength, this.length)
 
-   }
 
-   var val = this[offset + --byteLength]
 
-   var mul = 1
 
-   while (byteLength > 0 && (mul *= 0x100)) {
 
-     val += this[offset + --byteLength] * mul
 
-   }
 
-   return val
 
- }
 
- Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
 
-   if (!noAssert) checkOffset(offset, 1, this.length)
 
-   return this[offset]
 
- }
 
- Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
 
-   if (!noAssert) checkOffset(offset, 2, this.length)
 
-   return this[offset] | (this[offset + 1] << 8)
 
- }
 
- Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
 
-   if (!noAssert) checkOffset(offset, 2, this.length)
 
-   return (this[offset] << 8) | this[offset + 1]
 
- }
 
- Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
 
-   if (!noAssert) checkOffset(offset, 4, this.length)
 
-   return ((this[offset]) |
 
-       (this[offset + 1] << 8) |
 
-       (this[offset + 2] << 16)) +
 
-       (this[offset + 3] * 0x1000000)
 
- }
 
- Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
 
-   if (!noAssert) checkOffset(offset, 4, this.length)
 
-   return (this[offset] * 0x1000000) +
 
-     ((this[offset + 1] << 16) |
 
-     (this[offset + 2] << 8) |
 
-     this[offset + 3])
 
- }
 
- Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
 
-   offset = offset | 0
 
-   byteLength = byteLength | 0
 
-   if (!noAssert) checkOffset(offset, byteLength, this.length)
 
-   var val = this[offset]
 
-   var mul = 1
 
-   var i = 0
 
-   while (++i < byteLength && (mul *= 0x100)) {
 
-     val += this[offset + i] * mul
 
-   }
 
-   mul *= 0x80
 
-   if (val >= mul) val -= Math.pow(2, 8 * byteLength)
 
-   return val
 
- }
 
- Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
 
-   offset = offset | 0
 
-   byteLength = byteLength | 0
 
-   if (!noAssert) checkOffset(offset, byteLength, this.length)
 
-   var i = byteLength
 
-   var mul = 1
 
-   var val = this[offset + --i]
 
-   while (i > 0 && (mul *= 0x100)) {
 
-     val += this[offset + --i] * mul
 
-   }
 
-   mul *= 0x80
 
-   if (val >= mul) val -= Math.pow(2, 8 * byteLength)
 
-   return val
 
- }
 
- Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
 
-   if (!noAssert) checkOffset(offset, 1, this.length)
 
-   if (!(this[offset] & 0x80)) return (this[offset])
 
-   return ((0xff - this[offset] + 1) * -1)
 
- }
 
- Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
 
-   if (!noAssert) checkOffset(offset, 2, this.length)
 
-   var val = this[offset] | (this[offset + 1] << 8)
 
-   return (val & 0x8000) ? val | 0xFFFF0000 : val
 
- }
 
- Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
 
-   if (!noAssert) checkOffset(offset, 2, this.length)
 
-   var val = this[offset + 1] | (this[offset] << 8)
 
-   return (val & 0x8000) ? val | 0xFFFF0000 : val
 
- }
 
- Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
 
-   if (!noAssert) checkOffset(offset, 4, this.length)
 
-   return (this[offset]) |
 
-     (this[offset + 1] << 8) |
 
-     (this[offset + 2] << 16) |
 
-     (this[offset + 3] << 24)
 
- }
 
- Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
 
-   if (!noAssert) checkOffset(offset, 4, this.length)
 
-   return (this[offset] << 24) |
 
-     (this[offset + 1] << 16) |
 
-     (this[offset + 2] << 8) |
 
-     (this[offset + 3])
 
- }
 
- Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
 
-   if (!noAssert) checkOffset(offset, 4, this.length)
 
-   return ieee754.read(this, offset, true, 23, 4)
 
- }
 
- Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
 
-   if (!noAssert) checkOffset(offset, 4, this.length)
 
-   return ieee754.read(this, offset, false, 23, 4)
 
- }
 
- Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
 
-   if (!noAssert) checkOffset(offset, 8, this.length)
 
-   return ieee754.read(this, offset, true, 52, 8)
 
- }
 
- Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
 
-   if (!noAssert) checkOffset(offset, 8, this.length)
 
-   return ieee754.read(this, offset, false, 52, 8)
 
- }
 
- function checkInt (buf, value, offset, ext, max, min) {
 
-   if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
 
-   if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
 
-   if (offset + ext > buf.length) throw new RangeError('Index out of range')
 
- }
 
- Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
 
-   value = +value
 
-   offset = offset | 0
 
-   byteLength = byteLength | 0
 
-   if (!noAssert) {
 
-     var maxBytes = Math.pow(2, 8 * byteLength) - 1
 
-     checkInt(this, value, offset, byteLength, maxBytes, 0)
 
-   }
 
-   var mul = 1
 
-   var i = 0
 
-   this[offset] = value & 0xFF
 
-   while (++i < byteLength && (mul *= 0x100)) {
 
-     this[offset + i] = (value / mul) & 0xFF
 
-   }
 
-   return offset + byteLength
 
- }
 
- Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
 
-   value = +value
 
-   offset = offset | 0
 
-   byteLength = byteLength | 0
 
-   if (!noAssert) {
 
-     var maxBytes = Math.pow(2, 8 * byteLength) - 1
 
-     checkInt(this, value, offset, byteLength, maxBytes, 0)
 
-   }
 
-   var i = byteLength - 1
 
-   var mul = 1
 
-   this[offset + i] = value & 0xFF
 
-   while (--i >= 0 && (mul *= 0x100)) {
 
-     this[offset + i] = (value / mul) & 0xFF
 
-   }
 
-   return offset + byteLength
 
- }
 
- Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
 
-   value = +value
 
-   offset = offset | 0
 
-   if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
 
-   if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
 
-   this[offset] = (value & 0xff)
 
-   return offset + 1
 
- }
 
- function objectWriteUInt16 (buf, value, offset, littleEndian) {
 
-   if (value < 0) value = 0xffff + value + 1
 
-   for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {
 
-     buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
 
-       (littleEndian ? i : 1 - i) * 8
 
-   }
 
- }
 
- Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
 
-   value = +value
 
-   offset = offset | 0
 
-   if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
 
-   if (Buffer.TYPED_ARRAY_SUPPORT) {
 
-     this[offset] = (value & 0xff)
 
-     this[offset + 1] = (value >>> 8)
 
-   } else {
 
-     objectWriteUInt16(this, value, offset, true)
 
-   }
 
-   return offset + 2
 
- }
 
- Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
 
-   value = +value
 
-   offset = offset | 0
 
-   if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
 
-   if (Buffer.TYPED_ARRAY_SUPPORT) {
 
-     this[offset] = (value >>> 8)
 
-     this[offset + 1] = (value & 0xff)
 
-   } else {
 
-     objectWriteUInt16(this, value, offset, false)
 
-   }
 
-   return offset + 2
 
- }
 
- function objectWriteUInt32 (buf, value, offset, littleEndian) {
 
-   if (value < 0) value = 0xffffffff + value + 1
 
-   for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {
 
-     buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff
 
-   }
 
- }
 
- Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
 
-   value = +value
 
-   offset = offset | 0
 
-   if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
 
-   if (Buffer.TYPED_ARRAY_SUPPORT) {
 
-     this[offset + 3] = (value >>> 24)
 
-     this[offset + 2] = (value >>> 16)
 
-     this[offset + 1] = (value >>> 8)
 
-     this[offset] = (value & 0xff)
 
-   } else {
 
-     objectWriteUInt32(this, value, offset, true)
 
-   }
 
-   return offset + 4
 
- }
 
- Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
 
-   value = +value
 
-   offset = offset | 0
 
-   if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
 
-   if (Buffer.TYPED_ARRAY_SUPPORT) {
 
-     this[offset] = (value >>> 24)
 
-     this[offset + 1] = (value >>> 16)
 
-     this[offset + 2] = (value >>> 8)
 
-     this[offset + 3] = (value & 0xff)
 
-   } else {
 
-     objectWriteUInt32(this, value, offset, false)
 
-   }
 
-   return offset + 4
 
- }
 
- Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
 
-   value = +value
 
-   offset = offset | 0
 
-   if (!noAssert) {
 
-     var limit = Math.pow(2, 8 * byteLength - 1)
 
-     checkInt(this, value, offset, byteLength, limit - 1, -limit)
 
-   }
 
-   var i = 0
 
-   var mul = 1
 
-   var sub = 0
 
-   this[offset] = value & 0xFF
 
-   while (++i < byteLength && (mul *= 0x100)) {
 
-     if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
 
-       sub = 1
 
-     }
 
-     this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
 
-   }
 
-   return offset + byteLength
 
- }
 
- Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
 
-   value = +value
 
-   offset = offset | 0
 
-   if (!noAssert) {
 
-     var limit = Math.pow(2, 8 * byteLength - 1)
 
-     checkInt(this, value, offset, byteLength, limit - 1, -limit)
 
-   }
 
-   var i = byteLength - 1
 
-   var mul = 1
 
-   var sub = 0
 
-   this[offset + i] = value & 0xFF
 
-   while (--i >= 0 && (mul *= 0x100)) {
 
-     if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
 
-       sub = 1
 
-     }
 
-     this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
 
-   }
 
-   return offset + byteLength
 
- }
 
- Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
 
-   value = +value
 
-   offset = offset | 0
 
-   if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
 
-   if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
 
-   if (value < 0) value = 0xff + value + 1
 
-   this[offset] = (value & 0xff)
 
-   return offset + 1
 
- }
 
- Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
 
-   value = +value
 
-   offset = offset | 0
 
-   if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
 
-   if (Buffer.TYPED_ARRAY_SUPPORT) {
 
-     this[offset] = (value & 0xff)
 
-     this[offset + 1] = (value >>> 8)
 
-   } else {
 
-     objectWriteUInt16(this, value, offset, true)
 
-   }
 
-   return offset + 2
 
- }
 
- Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
 
-   value = +value
 
-   offset = offset | 0
 
-   if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
 
-   if (Buffer.TYPED_ARRAY_SUPPORT) {
 
-     this[offset] = (value >>> 8)
 
-     this[offset + 1] = (value & 0xff)
 
-   } else {
 
-     objectWriteUInt16(this, value, offset, false)
 
-   }
 
-   return offset + 2
 
- }
 
- Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
 
-   value = +value
 
-   offset = offset | 0
 
-   if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
 
-   if (Buffer.TYPED_ARRAY_SUPPORT) {
 
-     this[offset] = (value & 0xff)
 
-     this[offset + 1] = (value >>> 8)
 
-     this[offset + 2] = (value >>> 16)
 
-     this[offset + 3] = (value >>> 24)
 
-   } else {
 
-     objectWriteUInt32(this, value, offset, true)
 
-   }
 
-   return offset + 4
 
- }
 
- Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
 
-   value = +value
 
-   offset = offset | 0
 
-   if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
 
-   if (value < 0) value = 0xffffffff + value + 1
 
-   if (Buffer.TYPED_ARRAY_SUPPORT) {
 
-     this[offset] = (value >>> 24)
 
-     this[offset + 1] = (value >>> 16)
 
-     this[offset + 2] = (value >>> 8)
 
-     this[offset + 3] = (value & 0xff)
 
-   } else {
 
-     objectWriteUInt32(this, value, offset, false)
 
-   }
 
-   return offset + 4
 
- }
 
- function checkIEEE754 (buf, value, offset, ext, max, min) {
 
-   if (offset + ext > buf.length) throw new RangeError('Index out of range')
 
-   if (offset < 0) throw new RangeError('Index out of range')
 
- }
 
- function writeFloat (buf, value, offset, littleEndian, noAssert) {
 
-   if (!noAssert) {
 
-     checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
 
-   }
 
-   ieee754.write(buf, value, offset, littleEndian, 23, 4)
 
-   return offset + 4
 
- }
 
- Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
 
-   return writeFloat(this, value, offset, true, noAssert)
 
- }
 
- Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
 
-   return writeFloat(this, value, offset, false, noAssert)
 
- }
 
- function writeDouble (buf, value, offset, littleEndian, noAssert) {
 
-   if (!noAssert) {
 
-     checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
 
-   }
 
-   ieee754.write(buf, value, offset, littleEndian, 52, 8)
 
-   return offset + 8
 
- }
 
- Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
 
-   return writeDouble(this, value, offset, true, noAssert)
 
- }
 
- Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
 
-   return writeDouble(this, value, offset, false, noAssert)
 
- }
 
- // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
 
- Buffer.prototype.copy = function copy (target, targetStart, start, end) {
 
-   if (!start) start = 0
 
-   if (!end && end !== 0) end = this.length
 
-   if (targetStart >= target.length) targetStart = target.length
 
-   if (!targetStart) targetStart = 0
 
-   if (end > 0 && end < start) end = start
 
-   // Copy 0 bytes; we're done
 
-   if (end === start) return 0
 
-   if (target.length === 0 || this.length === 0) return 0
 
-   // Fatal error conditions
 
-   if (targetStart < 0) {
 
-     throw new RangeError('targetStart out of bounds')
 
-   }
 
-   if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
 
-   if (end < 0) throw new RangeError('sourceEnd out of bounds')
 
-   // Are we oob?
 
-   if (end > this.length) end = this.length
 
-   if (target.length - targetStart < end - start) {
 
-     end = target.length - targetStart + start
 
-   }
 
-   var len = end - start
 
-   var i
 
-   if (this === target && start < targetStart && targetStart < end) {
 
-     // descending copy from end
 
-     for (i = len - 1; i >= 0; --i) {
 
-       target[i + targetStart] = this[i + start]
 
-     }
 
-   } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
 
-     // ascending copy from start
 
-     for (i = 0; i < len; ++i) {
 
-       target[i + targetStart] = this[i + start]
 
-     }
 
-   } else {
 
-     Uint8Array.prototype.set.call(
 
-       target,
 
-       this.subarray(start, start + len),
 
-       targetStart
 
-     )
 
-   }
 
-   return len
 
- }
 
- // Usage:
 
- //    buffer.fill(number[, offset[, end]])
 
- //    buffer.fill(buffer[, offset[, end]])
 
- //    buffer.fill(string[, offset[, end]][, encoding])
 
- Buffer.prototype.fill = function fill (val, start, end, encoding) {
 
-   // Handle string cases:
 
-   if (typeof val === 'string') {
 
-     if (typeof start === 'string') {
 
-       encoding = start
 
-       start = 0
 
-       end = this.length
 
-     } else if (typeof end === 'string') {
 
-       encoding = end
 
-       end = this.length
 
-     }
 
-     if (val.length === 1) {
 
-       var code = val.charCodeAt(0)
 
-       if (code < 256) {
 
-         val = code
 
-       }
 
-     }
 
-     if (encoding !== undefined && typeof encoding !== 'string') {
 
-       throw new TypeError('encoding must be a string')
 
-     }
 
-     if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
 
-       throw new TypeError('Unknown encoding: ' + encoding)
 
-     }
 
-   } else if (typeof val === 'number') {
 
-     val = val & 255
 
-   }
 
-   // Invalid ranges are not set to a default, so can range check early.
 
-   if (start < 0 || this.length < start || this.length < end) {
 
-     throw new RangeError('Out of range index')
 
-   }
 
-   if (end <= start) {
 
-     return this
 
-   }
 
-   start = start >>> 0
 
-   end = end === undefined ? this.length : end >>> 0
 
-   if (!val) val = 0
 
-   var i
 
-   if (typeof val === 'number') {
 
-     for (i = start; i < end; ++i) {
 
-       this[i] = val
 
-     }
 
-   } else {
 
-     var bytes = Buffer.isBuffer(val)
 
-       ? val
 
-       : utf8ToBytes(new Buffer(val, encoding).toString())
 
-     var len = bytes.length
 
-     for (i = 0; i < end - start; ++i) {
 
-       this[i + start] = bytes[i % len]
 
-     }
 
-   }
 
-   return this
 
- }
 
- // HELPER FUNCTIONS
 
- // ================
 
- var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g
 
- function base64clean (str) {
 
-   // Node strips out invalid characters like \n and \t from the string, base64-js does not
 
-   str = stringtrim(str).replace(INVALID_BASE64_RE, '')
 
-   // Node converts strings with length < 2 to ''
 
-   if (str.length < 2) return ''
 
-   // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
 
-   while (str.length % 4 !== 0) {
 
-     str = str + '='
 
-   }
 
-   return str
 
- }
 
- function stringtrim (str) {
 
-   if (str.trim) return str.trim()
 
-   return str.replace(/^\s+|\s+$/g, '')
 
- }
 
- function toHex (n) {
 
-   if (n < 16) return '0' + n.toString(16)
 
-   return n.toString(16)
 
- }
 
- function utf8ToBytes (string, units) {
 
-   units = units || Infinity
 
-   var codePoint
 
-   var length = string.length
 
-   var leadSurrogate = null
 
-   var bytes = []
 
-   for (var i = 0; i < length; ++i) {
 
-     codePoint = string.charCodeAt(i)
 
-     // is surrogate component
 
-     if (codePoint > 0xD7FF && codePoint < 0xE000) {
 
-       // last char was a lead
 
-       if (!leadSurrogate) {
 
-         // no lead yet
 
-         if (codePoint > 0xDBFF) {
 
-           // unexpected trail
 
-           if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
 
-           continue
 
-         } else if (i + 1 === length) {
 
-           // unpaired lead
 
-           if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
 
-           continue
 
-         }
 
-         // valid lead
 
-         leadSurrogate = codePoint
 
-         continue
 
-       }
 
-       // 2 leads in a row
 
-       if (codePoint < 0xDC00) {
 
-         if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
 
-         leadSurrogate = codePoint
 
-         continue
 
-       }
 
-       // valid surrogate pair
 
-       codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
 
-     } else if (leadSurrogate) {
 
-       // valid bmp char, but last char was a lead
 
-       if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
 
-     }
 
-     leadSurrogate = null
 
-     // encode utf8
 
-     if (codePoint < 0x80) {
 
-       if ((units -= 1) < 0) break
 
-       bytes.push(codePoint)
 
-     } else if (codePoint < 0x800) {
 
-       if ((units -= 2) < 0) break
 
-       bytes.push(
 
-         codePoint >> 0x6 | 0xC0,
 
-         codePoint & 0x3F | 0x80
 
-       )
 
-     } else if (codePoint < 0x10000) {
 
-       if ((units -= 3) < 0) break
 
-       bytes.push(
 
-         codePoint >> 0xC | 0xE0,
 
-         codePoint >> 0x6 & 0x3F | 0x80,
 
-         codePoint & 0x3F | 0x80
 
-       )
 
-     } else if (codePoint < 0x110000) {
 
-       if ((units -= 4) < 0) break
 
-       bytes.push(
 
-         codePoint >> 0x12 | 0xF0,
 
-         codePoint >> 0xC & 0x3F | 0x80,
 
-         codePoint >> 0x6 & 0x3F | 0x80,
 
-         codePoint & 0x3F | 0x80
 
-       )
 
-     } else {
 
-       throw new Error('Invalid code point')
 
-     }
 
-   }
 
-   return bytes
 
- }
 
- function asciiToBytes (str) {
 
-   var byteArray = []
 
-   for (var i = 0; i < str.length; ++i) {
 
-     // Node's code seems to be doing this and not & 0x7F..
 
-     byteArray.push(str.charCodeAt(i) & 0xFF)
 
-   }
 
-   return byteArray
 
- }
 
- function utf16leToBytes (str, units) {
 
-   var c, hi, lo
 
-   var byteArray = []
 
-   for (var i = 0; i < str.length; ++i) {
 
-     if ((units -= 2) < 0) break
 
-     c = str.charCodeAt(i)
 
-     hi = c >> 8
 
-     lo = c % 256
 
-     byteArray.push(lo)
 
-     byteArray.push(hi)
 
-   }
 
-   return byteArray
 
- }
 
- function base64ToBytes (str) {
 
-   return base64.toByteArray(base64clean(str))
 
- }
 
- function blitBuffer (src, dst, offset, length) {
 
-   for (var i = 0; i < length; ++i) {
 
-     if ((i + offset >= dst.length) || (i >= src.length)) break
 
-     dst[i + offset] = src[i]
 
-   }
 
-   return i
 
- }
 
- function isnan (val) {
 
-   return val !== val // eslint-disable-line no-self-compare
 
- }
 
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
 
- /***/ }),
 
- /* 4 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- "use strict";
 
- // Copyright Joyent, Inc. and other Node contributors.
 
- //
 
- // Permission is hereby granted, free of charge, to any person obtaining a
 
- // copy of this software and associated documentation files (the
 
- // "Software"), to deal in the Software without restriction, including
 
- // without limitation the rights to use, copy, modify, merge, publish,
 
- // distribute, sublicense, and/or sell copies of the Software, and to permit
 
- // persons to whom the Software is furnished to do so, subject to the
 
- // following conditions:
 
- //
 
- // The above copyright notice and this permission notice shall be included
 
- // in all copies or substantial portions of the Software.
 
- //
 
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
 
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
 
- // a duplex stream is just a stream that is both readable and writable.
 
- // Since JS doesn't have multiple prototypal inheritance, this class
 
- // prototypally inherits from Readable, and then parasitically from
 
- // Writable.
 
- /*<replacement>*/
 
- var pna = __webpack_require__(6);
 
- /*</replacement>*/
 
- /*<replacement>*/
 
- var objectKeys = Object.keys || function (obj) {
 
-   var keys = [];
 
-   for (var key in obj) {
 
-     keys.push(key);
 
-   }return keys;
 
- };
 
- /*</replacement>*/
 
- module.exports = Duplex;
 
- /*<replacement>*/
 
- var util = Object.create(__webpack_require__(5));
 
- util.inherits = __webpack_require__(2);
 
- /*</replacement>*/
 
- var Readable = __webpack_require__(15);
 
- var Writable = __webpack_require__(18);
 
- util.inherits(Duplex, Readable);
 
- {
 
-   // avoid scope creep, the keys array can then be collected
 
-   var keys = objectKeys(Writable.prototype);
 
-   for (var v = 0; v < keys.length; v++) {
 
-     var method = keys[v];
 
-     if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
 
-   }
 
- }
 
- function Duplex(options) {
 
-   if (!(this instanceof Duplex)) return new Duplex(options);
 
-   Readable.call(this, options);
 
-   Writable.call(this, options);
 
-   if (options && options.readable === false) this.readable = false;
 
-   if (options && options.writable === false) this.writable = false;
 
-   this.allowHalfOpen = true;
 
-   if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
 
-   this.once('end', onend);
 
- }
 
- Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', {
 
-   // making it explicit this property is not enumerable
 
-   // because otherwise some prototype manipulation in
 
-   // userland will fail
 
-   enumerable: false,
 
-   get: function () {
 
-     return this._writableState.highWaterMark;
 
-   }
 
- });
 
- // the no-half-open enforcer
 
- function onend() {
 
-   // if we allow half-open state, or if the writable side ended,
 
-   // then we're ok.
 
-   if (this.allowHalfOpen || this._writableState.ended) return;
 
-   // no more data can be written.
 
-   // But allow more writes to happen in this tick.
 
-   pna.nextTick(onEndNT, this);
 
- }
 
- function onEndNT(self) {
 
-   self.end();
 
- }
 
- Object.defineProperty(Duplex.prototype, 'destroyed', {
 
-   get: function () {
 
-     if (this._readableState === undefined || this._writableState === undefined) {
 
-       return false;
 
-     }
 
-     return this._readableState.destroyed && this._writableState.destroyed;
 
-   },
 
-   set: function (value) {
 
-     // we ignore the value if the stream
 
-     // has not been initialized yet
 
-     if (this._readableState === undefined || this._writableState === undefined) {
 
-       return;
 
-     }
 
-     // backward compatibility, the user is explicitly
 
-     // managing destroyed
 
-     this._readableState.destroyed = value;
 
-     this._writableState.destroyed = value;
 
-   }
 
- });
 
- Duplex.prototype._destroy = function (err, cb) {
 
-   this.push(null);
 
-   this.end();
 
-   pna.nextTick(cb, err);
 
- };
 
- /***/ }),
 
- /* 5 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- /* WEBPACK VAR INJECTION */(function(Buffer) {// Copyright Joyent, Inc. and other Node contributors.
 
- //
 
- // Permission is hereby granted, free of charge, to any person obtaining a
 
- // copy of this software and associated documentation files (the
 
- // "Software"), to deal in the Software without restriction, including
 
- // without limitation the rights to use, copy, modify, merge, publish,
 
- // distribute, sublicense, and/or sell copies of the Software, and to permit
 
- // persons to whom the Software is furnished to do so, subject to the
 
- // following conditions:
 
- //
 
- // The above copyright notice and this permission notice shall be included
 
- // in all copies or substantial portions of the Software.
 
- //
 
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
 
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
 
- // NOTE: These type checking functions intentionally don't use `instanceof`
 
- // because it is fragile and can be easily faked with `Object.create()`.
 
- function isArray(arg) {
 
-   if (Array.isArray) {
 
-     return Array.isArray(arg);
 
-   }
 
-   return objectToString(arg) === '[object Array]';
 
- }
 
- exports.isArray = isArray;
 
- function isBoolean(arg) {
 
-   return typeof arg === 'boolean';
 
- }
 
- exports.isBoolean = isBoolean;
 
- function isNull(arg) {
 
-   return arg === null;
 
- }
 
- exports.isNull = isNull;
 
- function isNullOrUndefined(arg) {
 
-   return arg == null;
 
- }
 
- exports.isNullOrUndefined = isNullOrUndefined;
 
- function isNumber(arg) {
 
-   return typeof arg === 'number';
 
- }
 
- exports.isNumber = isNumber;
 
- function isString(arg) {
 
-   return typeof arg === 'string';
 
- }
 
- exports.isString = isString;
 
- function isSymbol(arg) {
 
-   return typeof arg === 'symbol';
 
- }
 
- exports.isSymbol = isSymbol;
 
- function isUndefined(arg) {
 
-   return arg === void 0;
 
- }
 
- exports.isUndefined = isUndefined;
 
- function isRegExp(re) {
 
-   return objectToString(re) === '[object RegExp]';
 
- }
 
- exports.isRegExp = isRegExp;
 
- function isObject(arg) {
 
-   return typeof arg === 'object' && arg !== null;
 
- }
 
- exports.isObject = isObject;
 
- function isDate(d) {
 
-   return objectToString(d) === '[object Date]';
 
- }
 
- exports.isDate = isDate;
 
- function isError(e) {
 
-   return (objectToString(e) === '[object Error]' || e instanceof Error);
 
- }
 
- exports.isError = isError;
 
- function isFunction(arg) {
 
-   return typeof arg === 'function';
 
- }
 
- exports.isFunction = isFunction;
 
- function isPrimitive(arg) {
 
-   return arg === null ||
 
-          typeof arg === 'boolean' ||
 
-          typeof arg === 'number' ||
 
-          typeof arg === 'string' ||
 
-          typeof arg === 'symbol' ||  // ES6 symbol
 
-          typeof arg === 'undefined';
 
- }
 
- exports.isPrimitive = isPrimitive;
 
- exports.isBuffer = Buffer.isBuffer;
 
- function objectToString(o) {
 
-   return Object.prototype.toString.call(o);
 
- }
 
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(3).Buffer))
 
- /***/ }),
 
- /* 6 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- "use strict";
 
- /* WEBPACK VAR INJECTION */(function(process) {
 
- if (typeof process === 'undefined' ||
 
-     !process.version ||
 
-     process.version.indexOf('v0.') === 0 ||
 
-     process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
 
-   module.exports = { nextTick: nextTick };
 
- } else {
 
-   module.exports = process
 
- }
 
- function nextTick(fn, arg1, arg2, arg3) {
 
-   if (typeof fn !== 'function') {
 
-     throw new TypeError('"callback" argument must be a function');
 
-   }
 
-   var len = arguments.length;
 
-   var args, i;
 
-   switch (len) {
 
-   case 0:
 
-   case 1:
 
-     return process.nextTick(fn);
 
-   case 2:
 
-     return process.nextTick(function afterTickOne() {
 
-       fn.call(null, arg1);
 
-     });
 
-   case 3:
 
-     return process.nextTick(function afterTickTwo() {
 
-       fn.call(null, arg1, arg2);
 
-     });
 
-   case 4:
 
-     return process.nextTick(function afterTickThree() {
 
-       fn.call(null, arg1, arg2, arg3);
 
-     });
 
-   default:
 
-     args = new Array(len - 1);
 
-     i = 0;
 
-     while (i < args.length) {
 
-       args[i++] = arguments[i];
 
-     }
 
-     return process.nextTick(function afterTick() {
 
-       fn.apply(null, args);
 
-     });
 
-   }
 
- }
 
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))
 
- /***/ }),
 
- /* 7 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- /* eslint-disable node/no-deprecated-api */
 
- var buffer = __webpack_require__(3)
 
- var Buffer = buffer.Buffer
 
- // alternative to using Object.keys for old browsers
 
- function copyProps (src, dst) {
 
-   for (var key in src) {
 
-     dst[key] = src[key]
 
-   }
 
- }
 
- if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
 
-   module.exports = buffer
 
- } else {
 
-   // Copy properties from require('buffer')
 
-   copyProps(buffer, exports)
 
-   exports.Buffer = SafeBuffer
 
- }
 
- function SafeBuffer (arg, encodingOrOffset, length) {
 
-   return Buffer(arg, encodingOrOffset, length)
 
- }
 
- // Copy static methods from Buffer
 
- copyProps(Buffer, SafeBuffer)
 
- SafeBuffer.from = function (arg, encodingOrOffset, length) {
 
-   if (typeof arg === 'number') {
 
-     throw new TypeError('Argument must not be a number')
 
-   }
 
-   return Buffer(arg, encodingOrOffset, length)
 
- }
 
- SafeBuffer.alloc = function (size, fill, encoding) {
 
-   if (typeof size !== 'number') {
 
-     throw new TypeError('Argument must be a number')
 
-   }
 
-   var buf = Buffer(size)
 
-   if (fill !== undefined) {
 
-     if (typeof encoding === 'string') {
 
-       buf.fill(fill, encoding)
 
-     } else {
 
-       buf.fill(fill)
 
-     }
 
-   } else {
 
-     buf.fill(0)
 
-   }
 
-   return buf
 
- }
 
- SafeBuffer.allocUnsafe = function (size) {
 
-   if (typeof size !== 'number') {
 
-     throw new TypeError('Argument must be a number')
 
-   }
 
-   return Buffer(size)
 
- }
 
- SafeBuffer.allocUnsafeSlow = function (size) {
 
-   if (typeof size !== 'number') {
 
-     throw new TypeError('Argument must be a number')
 
-   }
 
-   return buffer.SlowBuffer(size)
 
- }
 
- /***/ }),
 
- /* 8 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- "use strict";
 
- // Copyright Joyent, Inc. and other Node contributors.
 
- //
 
- // Permission is hereby granted, free of charge, to any person obtaining a
 
- // copy of this software and associated documentation files (the
 
- // "Software"), to deal in the Software without restriction, including
 
- // without limitation the rights to use, copy, modify, merge, publish,
 
- // distribute, sublicense, and/or sell copies of the Software, and to permit
 
- // persons to whom the Software is furnished to do so, subject to the
 
- // following conditions:
 
- //
 
- // The above copyright notice and this permission notice shall be included
 
- // in all copies or substantial portions of the Software.
 
- //
 
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
 
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
 
- var punycode = __webpack_require__(25);
 
- var util = __webpack_require__(27);
 
- exports.parse = urlParse;
 
- exports.resolve = urlResolve;
 
- exports.resolveObject = urlResolveObject;
 
- exports.format = urlFormat;
 
- exports.Url = Url;
 
- function Url() {
 
-   this.protocol = null;
 
-   this.slashes = null;
 
-   this.auth = null;
 
-   this.host = null;
 
-   this.port = null;
 
-   this.hostname = null;
 
-   this.hash = null;
 
-   this.search = null;
 
-   this.query = null;
 
-   this.pathname = null;
 
-   this.path = null;
 
-   this.href = null;
 
- }
 
- // Reference: RFC 3986, RFC 1808, RFC 2396
 
- // define these here so at least they only have to be
 
- // compiled once on the first module load.
 
- var protocolPattern = /^([a-z0-9.+-]+:)/i,
 
-     portPattern = /:[0-9]*$/,
 
-     // Special case for a simple path URL
 
-     simplePathPattern = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,
 
-     // RFC 2396: characters reserved for delimiting URLs.
 
-     // We actually just auto-escape these.
 
-     delims = ['<', '>', '"', '`', ' ', '\r', '\n', '\t'],
 
-     // RFC 2396: characters not allowed for various reasons.
 
-     unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims),
 
-     // Allowed by RFCs, but cause of XSS attacks.  Always escape these.
 
-     autoEscape = ['\''].concat(unwise),
 
-     // Characters that are never ever allowed in a hostname.
 
-     // Note that any invalid chars are also handled, but these
 
-     // are the ones that are *expected* to be seen, so we fast-path
 
-     // them.
 
-     nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),
 
-     hostEndingChars = ['/', '?', '#'],
 
-     hostnameMaxLen = 255,
 
-     hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,
 
-     hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,
 
-     // protocols that can allow "unsafe" and "unwise" chars.
 
-     unsafeProtocol = {
 
-       'javascript': true,
 
-       'javascript:': true
 
-     },
 
-     // protocols that never have a hostname.
 
-     hostlessProtocol = {
 
-       'javascript': true,
 
-       'javascript:': true
 
-     },
 
-     // protocols that always contain a // bit.
 
-     slashedProtocol = {
 
-       'http': true,
 
-       'https': true,
 
-       'ftp': true,
 
-       'gopher': true,
 
-       'file': true,
 
-       'http:': true,
 
-       'https:': true,
 
-       'ftp:': true,
 
-       'gopher:': true,
 
-       'file:': true
 
-     },
 
-     querystring = __webpack_require__(28);
 
- function urlParse(url, parseQueryString, slashesDenoteHost) {
 
-   if (url && util.isObject(url) && url instanceof Url) return url;
 
-   var u = new Url;
 
-   u.parse(url, parseQueryString, slashesDenoteHost);
 
-   return u;
 
- }
 
- Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {
 
-   if (!util.isString(url)) {
 
-     throw new TypeError("Parameter 'url' must be a string, not " + typeof url);
 
-   }
 
-   // Copy chrome, IE, opera backslash-handling behavior.
 
-   // Back slashes before the query string get converted to forward slashes
 
-   // See: https://code.google.com/p/chromium/issues/detail?id=25916
 
-   var queryIndex = url.indexOf('?'),
 
-       splitter =
 
-           (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',
 
-       uSplit = url.split(splitter),
 
-       slashRegex = /\\/g;
 
-   uSplit[0] = uSplit[0].replace(slashRegex, '/');
 
-   url = uSplit.join(splitter);
 
-   var rest = url;
 
-   // trim before proceeding.
 
-   // This is to support parse stuff like "  http://foo.com  \n"
 
-   rest = rest.trim();
 
-   if (!slashesDenoteHost && url.split('#').length === 1) {
 
-     // Try fast path regexp
 
-     var simplePath = simplePathPattern.exec(rest);
 
-     if (simplePath) {
 
-       this.path = rest;
 
-       this.href = rest;
 
-       this.pathname = simplePath[1];
 
-       if (simplePath[2]) {
 
-         this.search = simplePath[2];
 
-         if (parseQueryString) {
 
-           this.query = querystring.parse(this.search.substr(1));
 
-         } else {
 
-           this.query = this.search.substr(1);
 
-         }
 
-       } else if (parseQueryString) {
 
-         this.search = '';
 
-         this.query = {};
 
-       }
 
-       return this;
 
-     }
 
-   }
 
-   var proto = protocolPattern.exec(rest);
 
-   if (proto) {
 
-     proto = proto[0];
 
-     var lowerProto = proto.toLowerCase();
 
-     this.protocol = lowerProto;
 
-     rest = rest.substr(proto.length);
 
-   }
 
-   // figure out if it's got a host
 
-   // user@server is *always* interpreted as a hostname, and url
 
-   // resolution will treat //foo/bar as host=foo,path=bar because that's
 
-   // how the browser resolves relative URLs.
 
-   if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) {
 
-     var slashes = rest.substr(0, 2) === '//';
 
-     if (slashes && !(proto && hostlessProtocol[proto])) {
 
-       rest = rest.substr(2);
 
-       this.slashes = true;
 
-     }
 
-   }
 
-   if (!hostlessProtocol[proto] &&
 
-       (slashes || (proto && !slashedProtocol[proto]))) {
 
-     // there's a hostname.
 
-     // the first instance of /, ?, ;, or # ends the host.
 
-     //
 
-     // If there is an @ in the hostname, then non-host chars *are* allowed
 
-     // to the left of the last @ sign, unless some host-ending character
 
-     // comes *before* the @-sign.
 
-     // URLs are obnoxious.
 
-     //
 
-     // ex:
 
-     // http://a@b@c/ => user:a@b host:c
 
-     // http://a@b?@c => user:a host:c path:/?@c
 
-     // v0.12 TODO(isaacs): This is not quite how Chrome does things.
 
-     // Review our test case against browsers more comprehensively.
 
-     // find the first instance of any hostEndingChars
 
-     var hostEnd = -1;
 
-     for (var i = 0; i < hostEndingChars.length; i++) {
 
-       var hec = rest.indexOf(hostEndingChars[i]);
 
-       if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))
 
-         hostEnd = hec;
 
-     }
 
-     // at this point, either we have an explicit point where the
 
-     // auth portion cannot go past, or the last @ char is the decider.
 
-     var auth, atSign;
 
-     if (hostEnd === -1) {
 
-       // atSign can be anywhere.
 
-       atSign = rest.lastIndexOf('@');
 
-     } else {
 
-       // atSign must be in auth portion.
 
-       // http://a@b/c@d => host:b auth:a path:/c@d
 
-       atSign = rest.lastIndexOf('@', hostEnd);
 
-     }
 
-     // Now we have a portion which is definitely the auth.
 
-     // Pull that off.
 
-     if (atSign !== -1) {
 
-       auth = rest.slice(0, atSign);
 
-       rest = rest.slice(atSign + 1);
 
-       this.auth = decodeURIComponent(auth);
 
-     }
 
-     // the host is the remaining to the left of the first non-host char
 
-     hostEnd = -1;
 
-     for (var i = 0; i < nonHostChars.length; i++) {
 
-       var hec = rest.indexOf(nonHostChars[i]);
 
-       if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))
 
-         hostEnd = hec;
 
-     }
 
-     // if we still have not hit it, then the entire thing is a host.
 
-     if (hostEnd === -1)
 
-       hostEnd = rest.length;
 
-     this.host = rest.slice(0, hostEnd);
 
-     rest = rest.slice(hostEnd);
 
-     // pull out port.
 
-     this.parseHost();
 
-     // we've indicated that there is a hostname,
 
-     // so even if it's empty, it has to be present.
 
-     this.hostname = this.hostname || '';
 
-     // if hostname begins with [ and ends with ]
 
-     // assume that it's an IPv6 address.
 
-     var ipv6Hostname = this.hostname[0] === '[' &&
 
-         this.hostname[this.hostname.length - 1] === ']';
 
-     // validate a little.
 
-     if (!ipv6Hostname) {
 
-       var hostparts = this.hostname.split(/\./);
 
-       for (var i = 0, l = hostparts.length; i < l; i++) {
 
-         var part = hostparts[i];
 
-         if (!part) continue;
 
-         if (!part.match(hostnamePartPattern)) {
 
-           var newpart = '';
 
-           for (var j = 0, k = part.length; j < k; j++) {
 
-             if (part.charCodeAt(j) > 127) {
 
-               // we replace non-ASCII char with a temporary placeholder
 
-               // we need this to make sure size of hostname is not
 
-               // broken by replacing non-ASCII by nothing
 
-               newpart += 'x';
 
-             } else {
 
-               newpart += part[j];
 
-             }
 
-           }
 
-           // we test again with ASCII char only
 
-           if (!newpart.match(hostnamePartPattern)) {
 
-             var validParts = hostparts.slice(0, i);
 
-             var notHost = hostparts.slice(i + 1);
 
-             var bit = part.match(hostnamePartStart);
 
-             if (bit) {
 
-               validParts.push(bit[1]);
 
-               notHost.unshift(bit[2]);
 
-             }
 
-             if (notHost.length) {
 
-               rest = '/' + notHost.join('.') + rest;
 
-             }
 
-             this.hostname = validParts.join('.');
 
-             break;
 
-           }
 
-         }
 
-       }
 
-     }
 
-     if (this.hostname.length > hostnameMaxLen) {
 
-       this.hostname = '';
 
-     } else {
 
-       // hostnames are always lower case.
 
-       this.hostname = this.hostname.toLowerCase();
 
-     }
 
-     if (!ipv6Hostname) {
 
-       // IDNA Support: Returns a punycoded representation of "domain".
 
-       // It only converts parts of the domain name that
 
-       // have non-ASCII characters, i.e. it doesn't matter if
 
-       // you call it with a domain that already is ASCII-only.
 
-       this.hostname = punycode.toASCII(this.hostname);
 
-     }
 
-     var p = this.port ? ':' + this.port : '';
 
-     var h = this.hostname || '';
 
-     this.host = h + p;
 
-     this.href += this.host;
 
-     // strip [ and ] from the hostname
 
-     // the host field still retains them, though
 
-     if (ipv6Hostname) {
 
-       this.hostname = this.hostname.substr(1, this.hostname.length - 2);
 
-       if (rest[0] !== '/') {
 
-         rest = '/' + rest;
 
-       }
 
-     }
 
-   }
 
-   // now rest is set to the post-host stuff.
 
-   // chop off any delim chars.
 
-   if (!unsafeProtocol[lowerProto]) {
 
-     // First, make 100% sure that any "autoEscape" chars get
 
-     // escaped, even if encodeURIComponent doesn't think they
 
-     // need to be.
 
-     for (var i = 0, l = autoEscape.length; i < l; i++) {
 
-       var ae = autoEscape[i];
 
-       if (rest.indexOf(ae) === -1)
 
-         continue;
 
-       var esc = encodeURIComponent(ae);
 
-       if (esc === ae) {
 
-         esc = escape(ae);
 
-       }
 
-       rest = rest.split(ae).join(esc);
 
-     }
 
-   }
 
-   // chop off from the tail first.
 
-   var hash = rest.indexOf('#');
 
-   if (hash !== -1) {
 
-     // got a fragment string.
 
-     this.hash = rest.substr(hash);
 
-     rest = rest.slice(0, hash);
 
-   }
 
-   var qm = rest.indexOf('?');
 
-   if (qm !== -1) {
 
-     this.search = rest.substr(qm);
 
-     this.query = rest.substr(qm + 1);
 
-     if (parseQueryString) {
 
-       this.query = querystring.parse(this.query);
 
-     }
 
-     rest = rest.slice(0, qm);
 
-   } else if (parseQueryString) {
 
-     // no query string, but parseQueryString still requested
 
-     this.search = '';
 
-     this.query = {};
 
-   }
 
-   if (rest) this.pathname = rest;
 
-   if (slashedProtocol[lowerProto] &&
 
-       this.hostname && !this.pathname) {
 
-     this.pathname = '/';
 
-   }
 
-   //to support http.request
 
-   if (this.pathname || this.search) {
 
-     var p = this.pathname || '';
 
-     var s = this.search || '';
 
-     this.path = p + s;
 
-   }
 
-   // finally, reconstruct the href based on what has been validated.
 
-   this.href = this.format();
 
-   return this;
 
- };
 
- // format a parsed object into a url string
 
- function urlFormat(obj) {
 
-   // ensure it's an object, and not a string url.
 
-   // If it's an obj, this is a no-op.
 
-   // this way, you can call url_format() on strings
 
-   // to clean up potentially wonky urls.
 
-   if (util.isString(obj)) obj = urlParse(obj);
 
-   if (!(obj instanceof Url)) return Url.prototype.format.call(obj);
 
-   return obj.format();
 
- }
 
- Url.prototype.format = function() {
 
-   var auth = this.auth || '';
 
-   if (auth) {
 
-     auth = encodeURIComponent(auth);
 
-     auth = auth.replace(/%3A/i, ':');
 
-     auth += '@';
 
-   }
 
-   var protocol = this.protocol || '',
 
-       pathname = this.pathname || '',
 
-       hash = this.hash || '',
 
-       host = false,
 
-       query = '';
 
-   if (this.host) {
 
-     host = auth + this.host;
 
-   } else if (this.hostname) {
 
-     host = auth + (this.hostname.indexOf(':') === -1 ?
 
-         this.hostname :
 
-         '[' + this.hostname + ']');
 
-     if (this.port) {
 
-       host += ':' + this.port;
 
-     }
 
-   }
 
-   if (this.query &&
 
-       util.isObject(this.query) &&
 
-       Object.keys(this.query).length) {
 
-     query = querystring.stringify(this.query);
 
-   }
 
-   var search = this.search || (query && ('?' + query)) || '';
 
-   if (protocol && protocol.substr(-1) !== ':') protocol += ':';
 
-   // only the slashedProtocols get the //.  Not mailto:, xmpp:, etc.
 
-   // unless they had them to begin with.
 
-   if (this.slashes ||
 
-       (!protocol || slashedProtocol[protocol]) && host !== false) {
 
-     host = '//' + (host || '');
 
-     if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;
 
-   } else if (!host) {
 
-     host = '';
 
-   }
 
-   if (hash && hash.charAt(0) !== '#') hash = '#' + hash;
 
-   if (search && search.charAt(0) !== '?') search = '?' + search;
 
-   pathname = pathname.replace(/[?#]/g, function(match) {
 
-     return encodeURIComponent(match);
 
-   });
 
-   search = search.replace('#', '%23');
 
-   return protocol + host + pathname + search + hash;
 
- };
 
- function urlResolve(source, relative) {
 
-   return urlParse(source, false, true).resolve(relative);
 
- }
 
- Url.prototype.resolve = function(relative) {
 
-   return this.resolveObject(urlParse(relative, false, true)).format();
 
- };
 
- function urlResolveObject(source, relative) {
 
-   if (!source) return relative;
 
-   return urlParse(source, false, true).resolveObject(relative);
 
- }
 
- Url.prototype.resolveObject = function(relative) {
 
-   if (util.isString(relative)) {
 
-     var rel = new Url();
 
-     rel.parse(relative, false, true);
 
-     relative = rel;
 
-   }
 
-   var result = new Url();
 
-   var tkeys = Object.keys(this);
 
-   for (var tk = 0; tk < tkeys.length; tk++) {
 
-     var tkey = tkeys[tk];
 
-     result[tkey] = this[tkey];
 
-   }
 
-   // hash is always overridden, no matter what.
 
-   // even href="" will remove it.
 
-   result.hash = relative.hash;
 
-   // if the relative url is empty, then there's nothing left to do here.
 
-   if (relative.href === '') {
 
-     result.href = result.format();
 
-     return result;
 
-   }
 
-   // hrefs like //foo/bar always cut to the protocol.
 
-   if (relative.slashes && !relative.protocol) {
 
-     // take everything except the protocol from relative
 
-     var rkeys = Object.keys(relative);
 
-     for (var rk = 0; rk < rkeys.length; rk++) {
 
-       var rkey = rkeys[rk];
 
-       if (rkey !== 'protocol')
 
-         result[rkey] = relative[rkey];
 
-     }
 
-     //urlParse appends trailing / to urls like http://www.example.com
 
-     if (slashedProtocol[result.protocol] &&
 
-         result.hostname && !result.pathname) {
 
-       result.path = result.pathname = '/';
 
-     }
 
-     result.href = result.format();
 
-     return result;
 
-   }
 
-   if (relative.protocol && relative.protocol !== result.protocol) {
 
-     // if it's a known url protocol, then changing
 
-     // the protocol does weird things
 
-     // first, if it's not file:, then we MUST have a host,
 
-     // and if there was a path
 
-     // to begin with, then we MUST have a path.
 
-     // if it is file:, then the host is dropped,
 
-     // because that's known to be hostless.
 
-     // anything else is assumed to be absolute.
 
-     if (!slashedProtocol[relative.protocol]) {
 
-       var keys = Object.keys(relative);
 
-       for (var v = 0; v < keys.length; v++) {
 
-         var k = keys[v];
 
-         result[k] = relative[k];
 
-       }
 
-       result.href = result.format();
 
-       return result;
 
-     }
 
-     result.protocol = relative.protocol;
 
-     if (!relative.host && !hostlessProtocol[relative.protocol]) {
 
-       var relPath = (relative.pathname || '').split('/');
 
-       while (relPath.length && !(relative.host = relPath.shift()));
 
-       if (!relative.host) relative.host = '';
 
-       if (!relative.hostname) relative.hostname = '';
 
-       if (relPath[0] !== '') relPath.unshift('');
 
-       if (relPath.length < 2) relPath.unshift('');
 
-       result.pathname = relPath.join('/');
 
-     } else {
 
-       result.pathname = relative.pathname;
 
-     }
 
-     result.search = relative.search;
 
-     result.query = relative.query;
 
-     result.host = relative.host || '';
 
-     result.auth = relative.auth;
 
-     result.hostname = relative.hostname || relative.host;
 
-     result.port = relative.port;
 
-     // to support http.request
 
-     if (result.pathname || result.search) {
 
-       var p = result.pathname || '';
 
-       var s = result.search || '';
 
-       result.path = p + s;
 
-     }
 
-     result.slashes = result.slashes || relative.slashes;
 
-     result.href = result.format();
 
-     return result;
 
-   }
 
-   var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),
 
-       isRelAbs = (
 
-           relative.host ||
 
-           relative.pathname && relative.pathname.charAt(0) === '/'
 
-       ),
 
-       mustEndAbs = (isRelAbs || isSourceAbs ||
 
-                     (result.host && relative.pathname)),
 
-       removeAllDots = mustEndAbs,
 
-       srcPath = result.pathname && result.pathname.split('/') || [],
 
-       relPath = relative.pathname && relative.pathname.split('/') || [],
 
-       psychotic = result.protocol && !slashedProtocol[result.protocol];
 
-   // if the url is a non-slashed url, then relative
 
-   // links like ../.. should be able
 
-   // to crawl up to the hostname, as well.  This is strange.
 
-   // result.protocol has already been set by now.
 
-   // Later on, put the first path part into the host field.
 
-   if (psychotic) {
 
-     result.hostname = '';
 
-     result.port = null;
 
-     if (result.host) {
 
-       if (srcPath[0] === '') srcPath[0] = result.host;
 
-       else srcPath.unshift(result.host);
 
-     }
 
-     result.host = '';
 
-     if (relative.protocol) {
 
-       relative.hostname = null;
 
-       relative.port = null;
 
-       if (relative.host) {
 
-         if (relPath[0] === '') relPath[0] = relative.host;
 
-         else relPath.unshift(relative.host);
 
-       }
 
-       relative.host = null;
 
-     }
 
-     mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');
 
-   }
 
-   if (isRelAbs) {
 
-     // it's absolute.
 
-     result.host = (relative.host || relative.host === '') ?
 
-                   relative.host : result.host;
 
-     result.hostname = (relative.hostname || relative.hostname === '') ?
 
-                       relative.hostname : result.hostname;
 
-     result.search = relative.search;
 
-     result.query = relative.query;
 
-     srcPath = relPath;
 
-     // fall through to the dot-handling below.
 
-   } else if (relPath.length) {
 
-     // it's relative
 
-     // throw away the existing file, and take the new path instead.
 
-     if (!srcPath) srcPath = [];
 
-     srcPath.pop();
 
-     srcPath = srcPath.concat(relPath);
 
-     result.search = relative.search;
 
-     result.query = relative.query;
 
-   } else if (!util.isNullOrUndefined(relative.search)) {
 
-     // just pull out the search.
 
-     // like href='?foo'.
 
-     // Put this after the other two cases because it simplifies the booleans
 
-     if (psychotic) {
 
-       result.hostname = result.host = srcPath.shift();
 
-       //occationaly the auth can get stuck only in host
 
-       //this especially happens in cases like
 
-       //url.resolveObject('mailto:local1@domain1', 'local2@domain2')
 
-       var authInHost = result.host && result.host.indexOf('@') > 0 ?
 
-                        result.host.split('@') : false;
 
-       if (authInHost) {
 
-         result.auth = authInHost.shift();
 
-         result.host = result.hostname = authInHost.shift();
 
-       }
 
-     }
 
-     result.search = relative.search;
 
-     result.query = relative.query;
 
-     //to support http.request
 
-     if (!util.isNull(result.pathname) || !util.isNull(result.search)) {
 
-       result.path = (result.pathname ? result.pathname : '') +
 
-                     (result.search ? result.search : '');
 
-     }
 
-     result.href = result.format();
 
-     return result;
 
-   }
 
-   if (!srcPath.length) {
 
-     // no path at all.  easy.
 
-     // we've already handled the other stuff above.
 
-     result.pathname = null;
 
-     //to support http.request
 
-     if (result.search) {
 
-       result.path = '/' + result.search;
 
-     } else {
 
-       result.path = null;
 
-     }
 
-     result.href = result.format();
 
-     return result;
 
-   }
 
-   // if a url ENDs in . or .., then it must get a trailing slash.
 
-   // however, if it ends in anything else non-slashy,
 
-   // then it must NOT get a trailing slash.
 
-   var last = srcPath.slice(-1)[0];
 
-   var hasTrailingSlash = (
 
-       (result.host || relative.host || srcPath.length > 1) &&
 
-       (last === '.' || last === '..') || last === '');
 
-   // strip single dots, resolve double dots to parent dir
 
-   // if the path tries to go above the root, `up` ends up > 0
 
-   var up = 0;
 
-   for (var i = srcPath.length; i >= 0; i--) {
 
-     last = srcPath[i];
 
-     if (last === '.') {
 
-       srcPath.splice(i, 1);
 
-     } else if (last === '..') {
 
-       srcPath.splice(i, 1);
 
-       up++;
 
-     } else if (up) {
 
-       srcPath.splice(i, 1);
 
-       up--;
 
-     }
 
-   }
 
-   // if the path is allowed to go above the root, restore leading ..s
 
-   if (!mustEndAbs && !removeAllDots) {
 
-     for (; up--; up) {
 
-       srcPath.unshift('..');
 
-     }
 
-   }
 
-   if (mustEndAbs && srcPath[0] !== '' &&
 
-       (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {
 
-     srcPath.unshift('');
 
-   }
 
-   if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {
 
-     srcPath.push('');
 
-   }
 
-   var isAbsolute = srcPath[0] === '' ||
 
-       (srcPath[0] && srcPath[0].charAt(0) === '/');
 
-   // put the host back
 
-   if (psychotic) {
 
-     result.hostname = result.host = isAbsolute ? '' :
 
-                                     srcPath.length ? srcPath.shift() : '';
 
-     //occationaly the auth can get stuck only in host
 
-     //this especially happens in cases like
 
-     //url.resolveObject('mailto:local1@domain1', 'local2@domain2')
 
-     var authInHost = result.host && result.host.indexOf('@') > 0 ?
 
-                      result.host.split('@') : false;
 
-     if (authInHost) {
 
-       result.auth = authInHost.shift();
 
-       result.host = result.hostname = authInHost.shift();
 
-     }
 
-   }
 
-   mustEndAbs = mustEndAbs || (result.host && srcPath.length);
 
-   if (mustEndAbs && !isAbsolute) {
 
-     srcPath.unshift('');
 
-   }
 
-   if (!srcPath.length) {
 
-     result.pathname = null;
 
-     result.path = null;
 
-   } else {
 
-     result.pathname = srcPath.join('/');
 
-   }
 
-   //to support request.http
 
-   if (!util.isNull(result.pathname) || !util.isNull(result.search)) {
 
-     result.path = (result.pathname ? result.pathname : '') +
 
-                   (result.search ? result.search : '');
 
-   }
 
-   result.auth = relative.auth || result.auth;
 
-   result.slashes = result.slashes || relative.slashes;
 
-   result.href = result.format();
 
-   return result;
 
- };
 
- Url.prototype.parseHost = function() {
 
-   var host = this.host;
 
-   var port = portPattern.exec(host);
 
-   if (port) {
 
-     port = port[0];
 
-     if (port !== ':') {
 
-       this.port = port.substr(1);
 
-     }
 
-     host = host.substr(0, host.length - port.length);
 
-   }
 
-   if (host) this.hostname = host;
 
- };
 
- /***/ }),
 
- /* 9 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- "use strict";
 
- // Copyright Joyent, Inc. and other Node contributors.
 
- //
 
- // Permission is hereby granted, free of charge, to any person obtaining a
 
- // copy of this software and associated documentation files (the
 
- // "Software"), to deal in the Software without restriction, including
 
- // without limitation the rights to use, copy, modify, merge, publish,
 
- // distribute, sublicense, and/or sell copies of the Software, and to permit
 
- // persons to whom the Software is furnished to do so, subject to the
 
- // following conditions:
 
- //
 
- // The above copyright notice and this permission notice shall be included
 
- // in all copies or substantial portions of the Software.
 
- //
 
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
 
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
 
- var R = typeof Reflect === 'object' ? Reflect : null
 
- var ReflectApply = R && typeof R.apply === 'function'
 
-   ? R.apply
 
-   : function ReflectApply(target, receiver, args) {
 
-     return Function.prototype.apply.call(target, receiver, args);
 
-   }
 
- var ReflectOwnKeys
 
- if (R && typeof R.ownKeys === 'function') {
 
-   ReflectOwnKeys = R.ownKeys
 
- } else if (Object.getOwnPropertySymbols) {
 
-   ReflectOwnKeys = function ReflectOwnKeys(target) {
 
-     return Object.getOwnPropertyNames(target)
 
-       .concat(Object.getOwnPropertySymbols(target));
 
-   };
 
- } else {
 
-   ReflectOwnKeys = function ReflectOwnKeys(target) {
 
-     return Object.getOwnPropertyNames(target);
 
-   };
 
- }
 
- function ProcessEmitWarning(warning) {
 
-   if (console && console.warn) console.warn(warning);
 
- }
 
- var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {
 
-   return value !== value;
 
- }
 
- function EventEmitter() {
 
-   EventEmitter.init.call(this);
 
- }
 
- module.exports = EventEmitter;
 
- module.exports.once = once;
 
- // Backwards-compat with node 0.10.x
 
- EventEmitter.EventEmitter = EventEmitter;
 
- EventEmitter.prototype._events = undefined;
 
- EventEmitter.prototype._eventsCount = 0;
 
- EventEmitter.prototype._maxListeners = undefined;
 
- // By default EventEmitters will print a warning if more than 10 listeners are
 
- // added to it. This is a useful default which helps finding memory leaks.
 
- var defaultMaxListeners = 10;
 
- function checkListener(listener) {
 
-   if (typeof listener !== 'function') {
 
-     throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener);
 
-   }
 
- }
 
- Object.defineProperty(EventEmitter, 'defaultMaxListeners', {
 
-   enumerable: true,
 
-   get: function() {
 
-     return defaultMaxListeners;
 
-   },
 
-   set: function(arg) {
 
-     if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {
 
-       throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + '.');
 
-     }
 
-     defaultMaxListeners = arg;
 
-   }
 
- });
 
- EventEmitter.init = function() {
 
-   if (this._events === undefined ||
 
-       this._events === Object.getPrototypeOf(this)._events) {
 
-     this._events = Object.create(null);
 
-     this._eventsCount = 0;
 
-   }
 
-   this._maxListeners = this._maxListeners || undefined;
 
- };
 
- // Obviously not all Emitters should be limited to 10. This function allows
 
- // that to be increased. Set to zero for unlimited.
 
- EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {
 
-   if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {
 
-     throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + '.');
 
-   }
 
-   this._maxListeners = n;
 
-   return this;
 
- };
 
- function _getMaxListeners(that) {
 
-   if (that._maxListeners === undefined)
 
-     return EventEmitter.defaultMaxListeners;
 
-   return that._maxListeners;
 
- }
 
- EventEmitter.prototype.getMaxListeners = function getMaxListeners() {
 
-   return _getMaxListeners(this);
 
- };
 
- EventEmitter.prototype.emit = function emit(type) {
 
-   var args = [];
 
-   for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);
 
-   var doError = (type === 'error');
 
-   var events = this._events;
 
-   if (events !== undefined)
 
-     doError = (doError && events.error === undefined);
 
-   else if (!doError)
 
-     return false;
 
-   // If there is no 'error' event listener then throw.
 
-   if (doError) {
 
-     var er;
 
-     if (args.length > 0)
 
-       er = args[0];
 
-     if (er instanceof Error) {
 
-       // Note: The comments on the `throw` lines are intentional, they show
 
-       // up in Node's output if this results in an unhandled exception.
 
-       throw er; // Unhandled 'error' event
 
-     }
 
-     // At least give some kind of context to the user
 
-     var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));
 
-     err.context = er;
 
-     throw err; // Unhandled 'error' event
 
-   }
 
-   var handler = events[type];
 
-   if (handler === undefined)
 
-     return false;
 
-   if (typeof handler === 'function') {
 
-     ReflectApply(handler, this, args);
 
-   } else {
 
-     var len = handler.length;
 
-     var listeners = arrayClone(handler, len);
 
-     for (var i = 0; i < len; ++i)
 
-       ReflectApply(listeners[i], this, args);
 
-   }
 
-   return true;
 
- };
 
- function _addListener(target, type, listener, prepend) {
 
-   var m;
 
-   var events;
 
-   var existing;
 
-   checkListener(listener);
 
-   events = target._events;
 
-   if (events === undefined) {
 
-     events = target._events = Object.create(null);
 
-     target._eventsCount = 0;
 
-   } else {
 
-     // To avoid recursion in the case that type === "newListener"! Before
 
-     // adding it to the listeners, first emit "newListener".
 
-     if (events.newListener !== undefined) {
 
-       target.emit('newListener', type,
 
-                   listener.listener ? listener.listener : listener);
 
-       // Re-assign `events` because a newListener handler could have caused the
 
-       // this._events to be assigned to a new object
 
-       events = target._events;
 
-     }
 
-     existing = events[type];
 
-   }
 
-   if (existing === undefined) {
 
-     // Optimize the case of one listener. Don't need the extra array object.
 
-     existing = events[type] = listener;
 
-     ++target._eventsCount;
 
-   } else {
 
-     if (typeof existing === 'function') {
 
-       // Adding the second element, need to change to array.
 
-       existing = events[type] =
 
-         prepend ? [listener, existing] : [existing, listener];
 
-       // If we've already got an array, just append.
 
-     } else if (prepend) {
 
-       existing.unshift(listener);
 
-     } else {
 
-       existing.push(listener);
 
-     }
 
-     // Check for listener leak
 
-     m = _getMaxListeners(target);
 
-     if (m > 0 && existing.length > m && !existing.warned) {
 
-       existing.warned = true;
 
-       // No error code for this since it is a Warning
 
-       // eslint-disable-next-line no-restricted-syntax
 
-       var w = new Error('Possible EventEmitter memory leak detected. ' +
 
-                           existing.length + ' ' + String(type) + ' listeners ' +
 
-                           'added. Use emitter.setMaxListeners() to ' +
 
-                           'increase limit');
 
-       w.name = 'MaxListenersExceededWarning';
 
-       w.emitter = target;
 
-       w.type = type;
 
-       w.count = existing.length;
 
-       ProcessEmitWarning(w);
 
-     }
 
-   }
 
-   return target;
 
- }
 
- EventEmitter.prototype.addListener = function addListener(type, listener) {
 
-   return _addListener(this, type, listener, false);
 
- };
 
- EventEmitter.prototype.on = EventEmitter.prototype.addListener;
 
- EventEmitter.prototype.prependListener =
 
-     function prependListener(type, listener) {
 
-       return _addListener(this, type, listener, true);
 
-     };
 
- function onceWrapper() {
 
-   if (!this.fired) {
 
-     this.target.removeListener(this.type, this.wrapFn);
 
-     this.fired = true;
 
-     if (arguments.length === 0)
 
-       return this.listener.call(this.target);
 
-     return this.listener.apply(this.target, arguments);
 
-   }
 
- }
 
- function _onceWrap(target, type, listener) {
 
-   var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };
 
-   var wrapped = onceWrapper.bind(state);
 
-   wrapped.listener = listener;
 
-   state.wrapFn = wrapped;
 
-   return wrapped;
 
- }
 
- EventEmitter.prototype.once = function once(type, listener) {
 
-   checkListener(listener);
 
-   this.on(type, _onceWrap(this, type, listener));
 
-   return this;
 
- };
 
- EventEmitter.prototype.prependOnceListener =
 
-     function prependOnceListener(type, listener) {
 
-       checkListener(listener);
 
-       this.prependListener(type, _onceWrap(this, type, listener));
 
-       return this;
 
-     };
 
- // Emits a 'removeListener' event if and only if the listener was removed.
 
- EventEmitter.prototype.removeListener =
 
-     function removeListener(type, listener) {
 
-       var list, events, position, i, originalListener;
 
-       checkListener(listener);
 
-       events = this._events;
 
-       if (events === undefined)
 
-         return this;
 
-       list = events[type];
 
-       if (list === undefined)
 
-         return this;
 
-       if (list === listener || list.listener === listener) {
 
-         if (--this._eventsCount === 0)
 
-           this._events = Object.create(null);
 
-         else {
 
-           delete events[type];
 
-           if (events.removeListener)
 
-             this.emit('removeListener', type, list.listener || listener);
 
-         }
 
-       } else if (typeof list !== 'function') {
 
-         position = -1;
 
-         for (i = list.length - 1; i >= 0; i--) {
 
-           if (list[i] === listener || list[i].listener === listener) {
 
-             originalListener = list[i].listener;
 
-             position = i;
 
-             break;
 
-           }
 
-         }
 
-         if (position < 0)
 
-           return this;
 
-         if (position === 0)
 
-           list.shift();
 
-         else {
 
-           spliceOne(list, position);
 
-         }
 
-         if (list.length === 1)
 
-           events[type] = list[0];
 
-         if (events.removeListener !== undefined)
 
-           this.emit('removeListener', type, originalListener || listener);
 
-       }
 
-       return this;
 
-     };
 
- EventEmitter.prototype.off = EventEmitter.prototype.removeListener;
 
- EventEmitter.prototype.removeAllListeners =
 
-     function removeAllListeners(type) {
 
-       var listeners, events, i;
 
-       events = this._events;
 
-       if (events === undefined)
 
-         return this;
 
-       // not listening for removeListener, no need to emit
 
-       if (events.removeListener === undefined) {
 
-         if (arguments.length === 0) {
 
-           this._events = Object.create(null);
 
-           this._eventsCount = 0;
 
-         } else if (events[type] !== undefined) {
 
-           if (--this._eventsCount === 0)
 
-             this._events = Object.create(null);
 
-           else
 
-             delete events[type];
 
-         }
 
-         return this;
 
-       }
 
-       // emit removeListener for all listeners on all events
 
-       if (arguments.length === 0) {
 
-         var keys = Object.keys(events);
 
-         var key;
 
-         for (i = 0; i < keys.length; ++i) {
 
-           key = keys[i];
 
-           if (key === 'removeListener') continue;
 
-           this.removeAllListeners(key);
 
-         }
 
-         this.removeAllListeners('removeListener');
 
-         this._events = Object.create(null);
 
-         this._eventsCount = 0;
 
-         return this;
 
-       }
 
-       listeners = events[type];
 
-       if (typeof listeners === 'function') {
 
-         this.removeListener(type, listeners);
 
-       } else if (listeners !== undefined) {
 
-         // LIFO order
 
-         for (i = listeners.length - 1; i >= 0; i--) {
 
-           this.removeListener(type, listeners[i]);
 
-         }
 
-       }
 
-       return this;
 
-     };
 
- function _listeners(target, type, unwrap) {
 
-   var events = target._events;
 
-   if (events === undefined)
 
-     return [];
 
-   var evlistener = events[type];
 
-   if (evlistener === undefined)
 
-     return [];
 
-   if (typeof evlistener === 'function')
 
-     return unwrap ? [evlistener.listener || evlistener] : [evlistener];
 
-   return unwrap ?
 
-     unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);
 
- }
 
- EventEmitter.prototype.listeners = function listeners(type) {
 
-   return _listeners(this, type, true);
 
- };
 
- EventEmitter.prototype.rawListeners = function rawListeners(type) {
 
-   return _listeners(this, type, false);
 
- };
 
- EventEmitter.listenerCount = function(emitter, type) {
 
-   if (typeof emitter.listenerCount === 'function') {
 
-     return emitter.listenerCount(type);
 
-   } else {
 
-     return listenerCount.call(emitter, type);
 
-   }
 
- };
 
- EventEmitter.prototype.listenerCount = listenerCount;
 
- function listenerCount(type) {
 
-   var events = this._events;
 
-   if (events !== undefined) {
 
-     var evlistener = events[type];
 
-     if (typeof evlistener === 'function') {
 
-       return 1;
 
-     } else if (evlistener !== undefined) {
 
-       return evlistener.length;
 
-     }
 
-   }
 
-   return 0;
 
- }
 
- EventEmitter.prototype.eventNames = function eventNames() {
 
-   return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];
 
- };
 
- function arrayClone(arr, n) {
 
-   var copy = new Array(n);
 
-   for (var i = 0; i < n; ++i)
 
-     copy[i] = arr[i];
 
-   return copy;
 
- }
 
- function spliceOne(list, index) {
 
-   for (; index + 1 < list.length; index++)
 
-     list[index] = list[index + 1];
 
-   list.pop();
 
- }
 
- function unwrapListeners(arr) {
 
-   var ret = new Array(arr.length);
 
-   for (var i = 0; i < ret.length; ++i) {
 
-     ret[i] = arr[i].listener || arr[i];
 
-   }
 
-   return ret;
 
- }
 
- function once(emitter, name) {
 
-   return new Promise(function (resolve, reject) {
 
-     function errorListener(err) {
 
-       emitter.removeListener(name, resolver);
 
-       reject(err);
 
-     }
 
-     function resolver() {
 
-       if (typeof emitter.removeListener === 'function') {
 
-         emitter.removeListener('error', errorListener);
 
-       }
 
-       resolve([].slice.call(arguments));
 
-     };
 
-     eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });
 
-     if (name !== 'error') {
 
-       addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });
 
-     }
 
-   });
 
- }
 
- function addErrorHandlerIfEventEmitter(emitter, handler, flags) {
 
-   if (typeof emitter.on === 'function') {
 
-     eventTargetAgnosticAddListener(emitter, 'error', handler, flags);
 
-   }
 
- }
 
- function eventTargetAgnosticAddListener(emitter, name, listener, flags) {
 
-   if (typeof emitter.on === 'function') {
 
-     if (flags.once) {
 
-       emitter.once(name, listener);
 
-     } else {
 
-       emitter.on(name, listener);
 
-     }
 
-   } else if (typeof emitter.addEventListener === 'function') {
 
-     // EventTarget does not have `error` event semantics like Node
 
-     // EventEmitters, we do not listen for `error` events here.
 
-     emitter.addEventListener(name, function wrapListener(arg) {
 
-       // IE does not have builtin `{ once: true }` support so we
 
-       // have to do it manually.
 
-       if (flags.once) {
 
-         emitter.removeEventListener(name, wrapListener);
 
-       }
 
-       listener(arg);
 
-     });
 
-   } else {
 
-     throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof emitter);
 
-   }
 
- }
 
- /***/ }),
 
- /* 10 */
 
- /***/ (function(module, exports) {
 
- var toString = {}.toString;
 
- module.exports = Array.isArray || function (arr) {
 
-   return toString.call(arr) == '[object Array]';
 
- };
 
- /***/ }),
 
- /* 11 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- /* WEBPACK VAR INJECTION */(function(global) {var ClientRequest = __webpack_require__(32)
 
- var response = __webpack_require__(13)
 
- var extend = __webpack_require__(41)
 
- var statusCodes = __webpack_require__(42)
 
- var url = __webpack_require__(8)
 
- var http = exports
 
- http.request = function (opts, cb) {
 
- 	if (typeof opts === 'string')
 
- 		opts = url.parse(opts)
 
- 	else
 
- 		opts = extend(opts)
 
- 	// Normally, the page is loaded from http or https, so not specifying a protocol
 
- 	// will result in a (valid) protocol-relative url. However, this won't work if
 
- 	// the protocol is something else, like 'file:'
 
- 	var defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''
 
- 	var protocol = opts.protocol || defaultProtocol
 
- 	var host = opts.hostname || opts.host
 
- 	var port = opts.port
 
- 	var path = opts.path || '/'
 
- 	// Necessary for IPv6 addresses
 
- 	if (host && host.indexOf(':') !== -1)
 
- 		host = '[' + host + ']'
 
- 	// This may be a relative url. The browser should always be able to interpret it correctly.
 
- 	opts.url = (host ? (protocol + '//' + host) : '') + (port ? ':' + port : '') + path
 
- 	opts.method = (opts.method || 'GET').toUpperCase()
 
- 	opts.headers = opts.headers || {}
 
- 	// Also valid opts.auth, opts.mode
 
- 	var req = new ClientRequest(opts)
 
- 	if (cb)
 
- 		req.on('response', cb)
 
- 	return req
 
- }
 
- http.get = function get (opts, cb) {
 
- 	var req = http.request(opts, cb)
 
- 	req.end()
 
- 	return req
 
- }
 
- http.ClientRequest = ClientRequest
 
- http.IncomingMessage = response.IncomingMessage
 
- http.Agent = function () {}
 
- http.Agent.defaultMaxSockets = 4
 
- http.globalAgent = new http.Agent()
 
- http.STATUS_CODES = statusCodes
 
- http.METHODS = [
 
- 	'CHECKOUT',
 
- 	'CONNECT',
 
- 	'COPY',
 
- 	'DELETE',
 
- 	'GET',
 
- 	'HEAD',
 
- 	'LOCK',
 
- 	'M-SEARCH',
 
- 	'MERGE',
 
- 	'MKACTIVITY',
 
- 	'MKCOL',
 
- 	'MOVE',
 
- 	'NOTIFY',
 
- 	'OPTIONS',
 
- 	'PATCH',
 
- 	'POST',
 
- 	'PROPFIND',
 
- 	'PROPPATCH',
 
- 	'PURGE',
 
- 	'PUT',
 
- 	'REPORT',
 
- 	'SEARCH',
 
- 	'SUBSCRIBE',
 
- 	'TRACE',
 
- 	'UNLOCK',
 
- 	'UNSUBSCRIBE'
 
- ]
 
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
 
- /***/ }),
 
- /* 12 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- /* WEBPACK VAR INJECTION */(function(global) {exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableStream)
 
- exports.writableStream = isFunction(global.WritableStream)
 
- exports.abortController = isFunction(global.AbortController)
 
- exports.blobConstructor = false
 
- try {
 
- 	new Blob([new ArrayBuffer(1)])
 
- 	exports.blobConstructor = true
 
- } catch (e) {}
 
- // The xhr request to example.com may violate some restrictive CSP configurations,
 
- // so if we're running in a browser that supports `fetch`, avoid calling getXHR()
 
- // and assume support for certain features below.
 
- var xhr
 
- function getXHR () {
 
- 	// Cache the xhr value
 
- 	if (xhr !== undefined) return xhr
 
- 	if (global.XMLHttpRequest) {
 
- 		xhr = new global.XMLHttpRequest()
 
- 		// If XDomainRequest is available (ie only, where xhr might not work
 
- 		// cross domain), use the page location. Otherwise use example.com
 
- 		// Note: this doesn't actually make an http request.
 
- 		try {
 
- 			xhr.open('GET', global.XDomainRequest ? '/' : 'https://example.com')
 
- 		} catch(e) {
 
- 			xhr = null
 
- 		}
 
- 	} else {
 
- 		// Service workers don't have XHR
 
- 		xhr = null
 
- 	}
 
- 	return xhr
 
- }
 
- function checkTypeSupport (type) {
 
- 	var xhr = getXHR()
 
- 	if (!xhr) return false
 
- 	try {
 
- 		xhr.responseType = type
 
- 		return xhr.responseType === type
 
- 	} catch (e) {}
 
- 	return false
 
- }
 
- // For some strange reason, Safari 7.0 reports typeof global.ArrayBuffer === 'object'.
 
- // Safari 7.1 appears to have fixed this bug.
 
- var haveArrayBuffer = typeof global.ArrayBuffer !== 'undefined'
 
- var haveSlice = haveArrayBuffer && isFunction(global.ArrayBuffer.prototype.slice)
 
- // If fetch is supported, then arraybuffer will be supported too. Skip calling
 
- // checkTypeSupport(), since that calls getXHR().
 
- exports.arraybuffer = exports.fetch || (haveArrayBuffer && checkTypeSupport('arraybuffer'))
 
- // These next two tests unavoidably show warnings in Chrome. Since fetch will always
 
- // be used if it's available, just return false for these to avoid the warnings.
 
- exports.msstream = !exports.fetch && haveSlice && checkTypeSupport('ms-stream')
 
- exports.mozchunkedarraybuffer = !exports.fetch && haveArrayBuffer &&
 
- 	checkTypeSupport('moz-chunked-arraybuffer')
 
- // If fetch is supported, then overrideMimeType will be supported too. Skip calling
 
- // getXHR().
 
- exports.overrideMimeType = exports.fetch || (getXHR() ? isFunction(getXHR().overrideMimeType) : false)
 
- exports.vbArray = isFunction(global.VBArray)
 
- function isFunction (value) {
 
- 	return typeof value === 'function'
 
- }
 
- xhr = null // Help gc
 
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
 
- /***/ }),
 
- /* 13 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- /* WEBPACK VAR INJECTION */(function(process, Buffer, global) {var capability = __webpack_require__(12)
 
- var inherits = __webpack_require__(2)
 
- var stream = __webpack_require__(14)
 
- var rStates = exports.readyStates = {
 
- 	UNSENT: 0,
 
- 	OPENED: 1,
 
- 	HEADERS_RECEIVED: 2,
 
- 	LOADING: 3,
 
- 	DONE: 4
 
- }
 
- var IncomingMessage = exports.IncomingMessage = function (xhr, response, mode, fetchTimer) {
 
- 	var self = this
 
- 	stream.Readable.call(self)
 
- 	self._mode = mode
 
- 	self.headers = {}
 
- 	self.rawHeaders = []
 
- 	self.trailers = {}
 
- 	self.rawTrailers = []
 
- 	// Fake the 'close' event, but only once 'end' fires
 
- 	self.on('end', function () {
 
- 		// The nextTick is necessary to prevent the 'request' module from causing an infinite loop
 
- 		process.nextTick(function () {
 
- 			self.emit('close')
 
- 		})
 
- 	})
 
- 	if (mode === 'fetch') {
 
- 		self._fetchResponse = response
 
- 		self.url = response.url
 
- 		self.statusCode = response.status
 
- 		self.statusMessage = response.statusText
 
- 		
 
- 		response.headers.forEach(function (header, key){
 
- 			self.headers[key.toLowerCase()] = header
 
- 			self.rawHeaders.push(key, header)
 
- 		})
 
- 		if (capability.writableStream) {
 
- 			var writable = new WritableStream({
 
- 				write: function (chunk) {
 
- 					return new Promise(function (resolve, reject) {
 
- 						if (self._destroyed) {
 
- 							reject()
 
- 						} else if(self.push(new Buffer(chunk))) {
 
- 							resolve()
 
- 						} else {
 
- 							self._resumeFetch = resolve
 
- 						}
 
- 					})
 
- 				},
 
- 				close: function () {
 
- 					global.clearTimeout(fetchTimer)
 
- 					if (!self._destroyed)
 
- 						self.push(null)
 
- 				},
 
- 				abort: function (err) {
 
- 					if (!self._destroyed)
 
- 						self.emit('error', err)
 
- 				}
 
- 			})
 
- 			try {
 
- 				response.body.pipeTo(writable).catch(function (err) {
 
- 					global.clearTimeout(fetchTimer)
 
- 					if (!self._destroyed)
 
- 						self.emit('error', err)
 
- 				})
 
- 				return
 
- 			} catch (e) {} // pipeTo method isn't defined. Can't find a better way to feature test this
 
- 		}
 
- 		// fallback for when writableStream or pipeTo aren't available
 
- 		var reader = response.body.getReader()
 
- 		function read () {
 
- 			reader.read().then(function (result) {
 
- 				if (self._destroyed)
 
- 					return
 
- 				if (result.done) {
 
- 					global.clearTimeout(fetchTimer)
 
- 					self.push(null)
 
- 					return
 
- 				}
 
- 				self.push(new Buffer(result.value))
 
- 				read()
 
- 			}).catch(function (err) {
 
- 				global.clearTimeout(fetchTimer)
 
- 				if (!self._destroyed)
 
- 					self.emit('error', err)
 
- 			})
 
- 		}
 
- 		read()
 
- 	} else {
 
- 		self._xhr = xhr
 
- 		self._pos = 0
 
- 		self.url = xhr.responseURL
 
- 		self.statusCode = xhr.status
 
- 		self.statusMessage = xhr.statusText
 
- 		var headers = xhr.getAllResponseHeaders().split(/\r?\n/)
 
- 		headers.forEach(function (header) {
 
- 			var matches = header.match(/^([^:]+):\s*(.*)/)
 
- 			if (matches) {
 
- 				var key = matches[1].toLowerCase()
 
- 				if (key === 'set-cookie') {
 
- 					if (self.headers[key] === undefined) {
 
- 						self.headers[key] = []
 
- 					}
 
- 					self.headers[key].push(matches[2])
 
- 				} else if (self.headers[key] !== undefined) {
 
- 					self.headers[key] += ', ' + matches[2]
 
- 				} else {
 
- 					self.headers[key] = matches[2]
 
- 				}
 
- 				self.rawHeaders.push(matches[1], matches[2])
 
- 			}
 
- 		})
 
- 		self._charset = 'x-user-defined'
 
- 		if (!capability.overrideMimeType) {
 
- 			var mimeType = self.rawHeaders['mime-type']
 
- 			if (mimeType) {
 
- 				var charsetMatch = mimeType.match(/;\s*charset=([^;])(;|$)/)
 
- 				if (charsetMatch) {
 
- 					self._charset = charsetMatch[1].toLowerCase()
 
- 				}
 
- 			}
 
- 			if (!self._charset)
 
- 				self._charset = 'utf-8' // best guess
 
- 		}
 
- 	}
 
- }
 
- inherits(IncomingMessage, stream.Readable)
 
- IncomingMessage.prototype._read = function () {
 
- 	var self = this
 
- 	var resolve = self._resumeFetch
 
- 	if (resolve) {
 
- 		self._resumeFetch = null
 
- 		resolve()
 
- 	}
 
- }
 
- IncomingMessage.prototype._onXHRProgress = function () {
 
- 	var self = this
 
- 	var xhr = self._xhr
 
- 	var response = null
 
- 	switch (self._mode) {
 
- 		case 'text:vbarray': // For IE9
 
- 			if (xhr.readyState !== rStates.DONE)
 
- 				break
 
- 			try {
 
- 				// This fails in IE8
 
- 				response = new global.VBArray(xhr.responseBody).toArray()
 
- 			} catch (e) {}
 
- 			if (response !== null) {
 
- 				self.push(new Buffer(response))
 
- 				break
 
- 			}
 
- 			// Falls through in IE8	
 
- 		case 'text':
 
- 			try { // This will fail when readyState = 3 in IE9. Switch mode and wait for readyState = 4
 
- 				response = xhr.responseText
 
- 			} catch (e) {
 
- 				self._mode = 'text:vbarray'
 
- 				break
 
- 			}
 
- 			if (response.length > self._pos) {
 
- 				var newData = response.substr(self._pos)
 
- 				if (self._charset === 'x-user-defined') {
 
- 					var buffer = new Buffer(newData.length)
 
- 					for (var i = 0; i < newData.length; i++)
 
- 						buffer[i] = newData.charCodeAt(i) & 0xff
 
- 					self.push(buffer)
 
- 				} else {
 
- 					self.push(newData, self._charset)
 
- 				}
 
- 				self._pos = response.length
 
- 			}
 
- 			break
 
- 		case 'arraybuffer':
 
- 			if (xhr.readyState !== rStates.DONE || !xhr.response)
 
- 				break
 
- 			response = xhr.response
 
- 			self.push(new Buffer(new Uint8Array(response)))
 
- 			break
 
- 		case 'moz-chunked-arraybuffer': // take whole
 
- 			response = xhr.response
 
- 			if (xhr.readyState !== rStates.LOADING || !response)
 
- 				break
 
- 			self.push(new Buffer(new Uint8Array(response)))
 
- 			break
 
- 		case 'ms-stream':
 
- 			response = xhr.response
 
- 			if (xhr.readyState !== rStates.LOADING)
 
- 				break
 
- 			var reader = new global.MSStreamReader()
 
- 			reader.onprogress = function () {
 
- 				if (reader.result.byteLength > self._pos) {
 
- 					self.push(new Buffer(new Uint8Array(reader.result.slice(self._pos))))
 
- 					self._pos = reader.result.byteLength
 
- 				}
 
- 			}
 
- 			reader.onload = function () {
 
- 				self.push(null)
 
- 			}
 
- 			// reader.onerror = ??? // TODO: this
 
- 			reader.readAsArrayBuffer(response)
 
- 			break
 
- 	}
 
- 	// The ms-stream case handles end separately in reader.onload()
 
- 	if (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') {
 
- 		self.push(null)
 
- 	}
 
- }
 
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1), __webpack_require__(3).Buffer, __webpack_require__(0)))
 
- /***/ }),
 
- /* 14 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- exports = module.exports = __webpack_require__(15);
 
- exports.Stream = exports;
 
- exports.Readable = exports;
 
- exports.Writable = __webpack_require__(18);
 
- exports.Duplex = __webpack_require__(4);
 
- exports.Transform = __webpack_require__(20);
 
- exports.PassThrough = __webpack_require__(39);
 
- /***/ }),
 
- /* 15 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- "use strict";
 
- /* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors.
 
- //
 
- // Permission is hereby granted, free of charge, to any person obtaining a
 
- // copy of this software and associated documentation files (the
 
- // "Software"), to deal in the Software without restriction, including
 
- // without limitation the rights to use, copy, modify, merge, publish,
 
- // distribute, sublicense, and/or sell copies of the Software, and to permit
 
- // persons to whom the Software is furnished to do so, subject to the
 
- // following conditions:
 
- //
 
- // The above copyright notice and this permission notice shall be included
 
- // in all copies or substantial portions of the Software.
 
- //
 
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
 
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
 
- /*<replacement>*/
 
- var pna = __webpack_require__(6);
 
- /*</replacement>*/
 
- module.exports = Readable;
 
- /*<replacement>*/
 
- var isArray = __webpack_require__(10);
 
- /*</replacement>*/
 
- /*<replacement>*/
 
- var Duplex;
 
- /*</replacement>*/
 
- Readable.ReadableState = ReadableState;
 
- /*<replacement>*/
 
- var EE = __webpack_require__(9).EventEmitter;
 
- var EElistenerCount = function (emitter, type) {
 
-   return emitter.listeners(type).length;
 
- };
 
- /*</replacement>*/
 
- /*<replacement>*/
 
- var Stream = __webpack_require__(16);
 
- /*</replacement>*/
 
- /*<replacement>*/
 
- var Buffer = __webpack_require__(7).Buffer;
 
- var OurUint8Array = global.Uint8Array || function () {};
 
- function _uint8ArrayToBuffer(chunk) {
 
-   return Buffer.from(chunk);
 
- }
 
- function _isUint8Array(obj) {
 
-   return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
 
- }
 
- /*</replacement>*/
 
- /*<replacement>*/
 
- var util = Object.create(__webpack_require__(5));
 
- util.inherits = __webpack_require__(2);
 
- /*</replacement>*/
 
- /*<replacement>*/
 
- var debugUtil = __webpack_require__(33);
 
- var debug = void 0;
 
- if (debugUtil && debugUtil.debuglog) {
 
-   debug = debugUtil.debuglog('stream');
 
- } else {
 
-   debug = function () {};
 
- }
 
- /*</replacement>*/
 
- var BufferList = __webpack_require__(34);
 
- var destroyImpl = __webpack_require__(17);
 
- var StringDecoder;
 
- util.inherits(Readable, Stream);
 
- var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
 
- function prependListener(emitter, event, fn) {
 
-   // Sadly this is not cacheable as some libraries bundle their own
 
-   // event emitter implementation with them.
 
-   if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);
 
-   // This is a hack to make sure that our error handler is attached before any
 
-   // userland ones.  NEVER DO THIS. This is here only because this code needs
 
-   // to continue to work with older versions of Node.js that do not include
 
-   // the prependListener() method. The goal is to eventually remove this hack.
 
-   if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
 
- }
 
- function ReadableState(options, stream) {
 
-   Duplex = Duplex || __webpack_require__(4);
 
-   options = options || {};
 
-   // Duplex streams are both readable and writable, but share
 
-   // the same options object.
 
-   // However, some cases require setting options to different
 
-   // values for the readable and the writable sides of the duplex stream.
 
-   // These options can be provided separately as readableXXX and writableXXX.
 
-   var isDuplex = stream instanceof Duplex;
 
-   // object stream flag. Used to make read(n) ignore n and to
 
-   // make all the buffer merging and length checks go away
 
-   this.objectMode = !!options.objectMode;
 
-   if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
 
-   // the point at which it stops calling _read() to fill the buffer
 
-   // Note: 0 is a valid value, means "don't call _read preemptively ever"
 
-   var hwm = options.highWaterMark;
 
-   var readableHwm = options.readableHighWaterMark;
 
-   var defaultHwm = this.objectMode ? 16 : 16 * 1024;
 
-   if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;
 
-   // cast to ints.
 
-   this.highWaterMark = Math.floor(this.highWaterMark);
 
-   // A linked list is used to store data chunks instead of an array because the
 
-   // linked list can remove elements from the beginning faster than
 
-   // array.shift()
 
-   this.buffer = new BufferList();
 
-   this.length = 0;
 
-   this.pipes = null;
 
-   this.pipesCount = 0;
 
-   this.flowing = null;
 
-   this.ended = false;
 
-   this.endEmitted = false;
 
-   this.reading = false;
 
-   // a flag to be able to tell if the event 'readable'/'data' is emitted
 
-   // immediately, or on a later tick.  We set this to true at first, because
 
-   // any actions that shouldn't happen until "later" should generally also
 
-   // not happen before the first read call.
 
-   this.sync = true;
 
-   // whenever we return null, then we set a flag to say
 
-   // that we're awaiting a 'readable' event emission.
 
-   this.needReadable = false;
 
-   this.emittedReadable = false;
 
-   this.readableListening = false;
 
-   this.resumeScheduled = false;
 
-   // has it been destroyed
 
-   this.destroyed = false;
 
-   // Crypto is kind of old and crusty.  Historically, its default string
 
-   // encoding is 'binary' so we have to make this configurable.
 
-   // Everything else in the universe uses 'utf8', though.
 
-   this.defaultEncoding = options.defaultEncoding || 'utf8';
 
-   // the number of writers that are awaiting a drain event in .pipe()s
 
-   this.awaitDrain = 0;
 
-   // if true, a maybeReadMore has been scheduled
 
-   this.readingMore = false;
 
-   this.decoder = null;
 
-   this.encoding = null;
 
-   if (options.encoding) {
 
-     if (!StringDecoder) StringDecoder = __webpack_require__(19).StringDecoder;
 
-     this.decoder = new StringDecoder(options.encoding);
 
-     this.encoding = options.encoding;
 
-   }
 
- }
 
- function Readable(options) {
 
-   Duplex = Duplex || __webpack_require__(4);
 
-   if (!(this instanceof Readable)) return new Readable(options);
 
-   this._readableState = new ReadableState(options, this);
 
-   // legacy
 
-   this.readable = true;
 
-   if (options) {
 
-     if (typeof options.read === 'function') this._read = options.read;
 
-     if (typeof options.destroy === 'function') this._destroy = options.destroy;
 
-   }
 
-   Stream.call(this);
 
- }
 
- Object.defineProperty(Readable.prototype, 'destroyed', {
 
-   get: function () {
 
-     if (this._readableState === undefined) {
 
-       return false;
 
-     }
 
-     return this._readableState.destroyed;
 
-   },
 
-   set: function (value) {
 
-     // we ignore the value if the stream
 
-     // has not been initialized yet
 
-     if (!this._readableState) {
 
-       return;
 
-     }
 
-     // backward compatibility, the user is explicitly
 
-     // managing destroyed
 
-     this._readableState.destroyed = value;
 
-   }
 
- });
 
- Readable.prototype.destroy = destroyImpl.destroy;
 
- Readable.prototype._undestroy = destroyImpl.undestroy;
 
- Readable.prototype._destroy = function (err, cb) {
 
-   this.push(null);
 
-   cb(err);
 
- };
 
- // Manually shove something into the read() buffer.
 
- // This returns true if the highWaterMark has not been hit yet,
 
- // similar to how Writable.write() returns true if you should
 
- // write() some more.
 
- Readable.prototype.push = function (chunk, encoding) {
 
-   var state = this._readableState;
 
-   var skipChunkCheck;
 
-   if (!state.objectMode) {
 
-     if (typeof chunk === 'string') {
 
-       encoding = encoding || state.defaultEncoding;
 
-       if (encoding !== state.encoding) {
 
-         chunk = Buffer.from(chunk, encoding);
 
-         encoding = '';
 
-       }
 
-       skipChunkCheck = true;
 
-     }
 
-   } else {
 
-     skipChunkCheck = true;
 
-   }
 
-   return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
 
- };
 
- // Unshift should *always* be something directly out of read()
 
- Readable.prototype.unshift = function (chunk) {
 
-   return readableAddChunk(this, chunk, null, true, false);
 
- };
 
- function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
 
-   var state = stream._readableState;
 
-   if (chunk === null) {
 
-     state.reading = false;
 
-     onEofChunk(stream, state);
 
-   } else {
 
-     var er;
 
-     if (!skipChunkCheck) er = chunkInvalid(state, chunk);
 
-     if (er) {
 
-       stream.emit('error', er);
 
-     } else if (state.objectMode || chunk && chunk.length > 0) {
 
-       if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {
 
-         chunk = _uint8ArrayToBuffer(chunk);
 
-       }
 
-       if (addToFront) {
 
-         if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);
 
-       } else if (state.ended) {
 
-         stream.emit('error', new Error('stream.push() after EOF'));
 
-       } else {
 
-         state.reading = false;
 
-         if (state.decoder && !encoding) {
 
-           chunk = state.decoder.write(chunk);
 
-           if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);
 
-         } else {
 
-           addChunk(stream, state, chunk, false);
 
-         }
 
-       }
 
-     } else if (!addToFront) {
 
-       state.reading = false;
 
-     }
 
-   }
 
-   return needMoreData(state);
 
- }
 
- function addChunk(stream, state, chunk, addToFront) {
 
-   if (state.flowing && state.length === 0 && !state.sync) {
 
-     stream.emit('data', chunk);
 
-     stream.read(0);
 
-   } else {
 
-     // update the buffer info.
 
-     state.length += state.objectMode ? 1 : chunk.length;
 
-     if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
 
-     if (state.needReadable) emitReadable(stream);
 
-   }
 
-   maybeReadMore(stream, state);
 
- }
 
- function chunkInvalid(state, chunk) {
 
-   var er;
 
-   if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
 
-     er = new TypeError('Invalid non-string/buffer chunk');
 
-   }
 
-   return er;
 
- }
 
- // if it's past the high water mark, we can push in some more.
 
- // Also, if we have no data yet, we can stand some
 
- // more bytes.  This is to work around cases where hwm=0,
 
- // such as the repl.  Also, if the push() triggered a
 
- // readable event, and the user called read(largeNumber) such that
 
- // needReadable was set, then we ought to push more, so that another
 
- // 'readable' event will be triggered.
 
- function needMoreData(state) {
 
-   return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
 
- }
 
- Readable.prototype.isPaused = function () {
 
-   return this._readableState.flowing === false;
 
- };
 
- // backwards compatibility.
 
- Readable.prototype.setEncoding = function (enc) {
 
-   if (!StringDecoder) StringDecoder = __webpack_require__(19).StringDecoder;
 
-   this._readableState.decoder = new StringDecoder(enc);
 
-   this._readableState.encoding = enc;
 
-   return this;
 
- };
 
- // Don't raise the hwm > 8MB
 
- var MAX_HWM = 0x800000;
 
- function computeNewHighWaterMark(n) {
 
-   if (n >= MAX_HWM) {
 
-     n = MAX_HWM;
 
-   } else {
 
-     // Get the next highest power of 2 to prevent increasing hwm excessively in
 
-     // tiny amounts
 
-     n--;
 
-     n |= n >>> 1;
 
-     n |= n >>> 2;
 
-     n |= n >>> 4;
 
-     n |= n >>> 8;
 
-     n |= n >>> 16;
 
-     n++;
 
-   }
 
-   return n;
 
- }
 
- // This function is designed to be inlinable, so please take care when making
 
- // changes to the function body.
 
- function howMuchToRead(n, state) {
 
-   if (n <= 0 || state.length === 0 && state.ended) return 0;
 
-   if (state.objectMode) return 1;
 
-   if (n !== n) {
 
-     // Only flow one buffer at a time
 
-     if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
 
-   }
 
-   // If we're asking for more than the current hwm, then raise the hwm.
 
-   if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
 
-   if (n <= state.length) return n;
 
-   // Don't have enough
 
-   if (!state.ended) {
 
-     state.needReadable = true;
 
-     return 0;
 
-   }
 
-   return state.length;
 
- }
 
- // you can override either this method, or the async _read(n) below.
 
- Readable.prototype.read = function (n) {
 
-   debug('read', n);
 
-   n = parseInt(n, 10);
 
-   var state = this._readableState;
 
-   var nOrig = n;
 
-   if (n !== 0) state.emittedReadable = false;
 
-   // if we're doing read(0) to trigger a readable event, but we
 
-   // already have a bunch of data in the buffer, then just trigger
 
-   // the 'readable' event and move on.
 
-   if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
 
-     debug('read: emitReadable', state.length, state.ended);
 
-     if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
 
-     return null;
 
-   }
 
-   n = howMuchToRead(n, state);
 
-   // if we've ended, and we're now clear, then finish it up.
 
-   if (n === 0 && state.ended) {
 
-     if (state.length === 0) endReadable(this);
 
-     return null;
 
-   }
 
-   // All the actual chunk generation logic needs to be
 
-   // *below* the call to _read.  The reason is that in certain
 
-   // synthetic stream cases, such as passthrough streams, _read
 
-   // may be a completely synchronous operation which may change
 
-   // the state of the read buffer, providing enough data when
 
-   // before there was *not* enough.
 
-   //
 
-   // So, the steps are:
 
-   // 1. Figure out what the state of things will be after we do
 
-   // a read from the buffer.
 
-   //
 
-   // 2. If that resulting state will trigger a _read, then call _read.
 
-   // Note that this may be asynchronous, or synchronous.  Yes, it is
 
-   // deeply ugly to write APIs this way, but that still doesn't mean
 
-   // that the Readable class should behave improperly, as streams are
 
-   // designed to be sync/async agnostic.
 
-   // Take note if the _read call is sync or async (ie, if the read call
 
-   // has returned yet), so that we know whether or not it's safe to emit
 
-   // 'readable' etc.
 
-   //
 
-   // 3. Actually pull the requested chunks out of the buffer and return.
 
-   // if we need a readable event, then we need to do some reading.
 
-   var doRead = state.needReadable;
 
-   debug('need readable', doRead);
 
-   // if we currently have less than the highWaterMark, then also read some
 
-   if (state.length === 0 || state.length - n < state.highWaterMark) {
 
-     doRead = true;
 
-     debug('length less than watermark', doRead);
 
-   }
 
-   // however, if we've ended, then there's no point, and if we're already
 
-   // reading, then it's unnecessary.
 
-   if (state.ended || state.reading) {
 
-     doRead = false;
 
-     debug('reading or ended', doRead);
 
-   } else if (doRead) {
 
-     debug('do read');
 
-     state.reading = true;
 
-     state.sync = true;
 
-     // if the length is currently zero, then we *need* a readable event.
 
-     if (state.length === 0) state.needReadable = true;
 
-     // call internal read method
 
-     this._read(state.highWaterMark);
 
-     state.sync = false;
 
-     // If _read pushed data synchronously, then `reading` will be false,
 
-     // and we need to re-evaluate how much data we can return to the user.
 
-     if (!state.reading) n = howMuchToRead(nOrig, state);
 
-   }
 
-   var ret;
 
-   if (n > 0) ret = fromList(n, state);else ret = null;
 
-   if (ret === null) {
 
-     state.needReadable = true;
 
-     n = 0;
 
-   } else {
 
-     state.length -= n;
 
-   }
 
-   if (state.length === 0) {
 
-     // If we have nothing in the buffer, then we want to know
 
-     // as soon as we *do* get something into the buffer.
 
-     if (!state.ended) state.needReadable = true;
 
-     // If we tried to read() past the EOF, then emit end on the next tick.
 
-     if (nOrig !== n && state.ended) endReadable(this);
 
-   }
 
-   if (ret !== null) this.emit('data', ret);
 
-   return ret;
 
- };
 
- function onEofChunk(stream, state) {
 
-   if (state.ended) return;
 
-   if (state.decoder) {
 
-     var chunk = state.decoder.end();
 
-     if (chunk && chunk.length) {
 
-       state.buffer.push(chunk);
 
-       state.length += state.objectMode ? 1 : chunk.length;
 
-     }
 
-   }
 
-   state.ended = true;
 
-   // emit 'readable' now to make sure it gets picked up.
 
-   emitReadable(stream);
 
- }
 
- // Don't emit readable right away in sync mode, because this can trigger
 
- // another read() call => stack overflow.  This way, it might trigger
 
- // a nextTick recursion warning, but that's not so bad.
 
- function emitReadable(stream) {
 
-   var state = stream._readableState;
 
-   state.needReadable = false;
 
-   if (!state.emittedReadable) {
 
-     debug('emitReadable', state.flowing);
 
-     state.emittedReadable = true;
 
-     if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);
 
-   }
 
- }
 
- function emitReadable_(stream) {
 
-   debug('emit readable');
 
-   stream.emit('readable');
 
-   flow(stream);
 
- }
 
- // at this point, the user has presumably seen the 'readable' event,
 
- // and called read() to consume some data.  that may have triggered
 
- // in turn another _read(n) call, in which case reading = true if
 
- // it's in progress.
 
- // However, if we're not ended, or reading, and the length < hwm,
 
- // then go ahead and try to read some more preemptively.
 
- function maybeReadMore(stream, state) {
 
-   if (!state.readingMore) {
 
-     state.readingMore = true;
 
-     pna.nextTick(maybeReadMore_, stream, state);
 
-   }
 
- }
 
- function maybeReadMore_(stream, state) {
 
-   var len = state.length;
 
-   while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
 
-     debug('maybeReadMore read 0');
 
-     stream.read(0);
 
-     if (len === state.length)
 
-       // didn't get any data, stop spinning.
 
-       break;else len = state.length;
 
-   }
 
-   state.readingMore = false;
 
- }
 
- // abstract method.  to be overridden in specific implementation classes.
 
- // call cb(er, data) where data is <= n in length.
 
- // for virtual (non-string, non-buffer) streams, "length" is somewhat
 
- // arbitrary, and perhaps not very meaningful.
 
- Readable.prototype._read = function (n) {
 
-   this.emit('error', new Error('_read() is not implemented'));
 
- };
 
- Readable.prototype.pipe = function (dest, pipeOpts) {
 
-   var src = this;
 
-   var state = this._readableState;
 
-   switch (state.pipesCount) {
 
-     case 0:
 
-       state.pipes = dest;
 
-       break;
 
-     case 1:
 
-       state.pipes = [state.pipes, dest];
 
-       break;
 
-     default:
 
-       state.pipes.push(dest);
 
-       break;
 
-   }
 
-   state.pipesCount += 1;
 
-   debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
 
-   var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
 
-   var endFn = doEnd ? onend : unpipe;
 
-   if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);
 
-   dest.on('unpipe', onunpipe);
 
-   function onunpipe(readable, unpipeInfo) {
 
-     debug('onunpipe');
 
-     if (readable === src) {
 
-       if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
 
-         unpipeInfo.hasUnpiped = true;
 
-         cleanup();
 
-       }
 
-     }
 
-   }
 
-   function onend() {
 
-     debug('onend');
 
-     dest.end();
 
-   }
 
-   // when the dest drains, it reduces the awaitDrain counter
 
-   // on the source.  This would be more elegant with a .once()
 
-   // handler in flow(), but adding and removing repeatedly is
 
-   // too slow.
 
-   var ondrain = pipeOnDrain(src);
 
-   dest.on('drain', ondrain);
 
-   var cleanedUp = false;
 
-   function cleanup() {
 
-     debug('cleanup');
 
-     // cleanup event handlers once the pipe is broken
 
-     dest.removeListener('close', onclose);
 
-     dest.removeListener('finish', onfinish);
 
-     dest.removeListener('drain', ondrain);
 
-     dest.removeListener('error', onerror);
 
-     dest.removeListener('unpipe', onunpipe);
 
-     src.removeListener('end', onend);
 
-     src.removeListener('end', unpipe);
 
-     src.removeListener('data', ondata);
 
-     cleanedUp = true;
 
-     // if the reader is waiting for a drain event from this
 
-     // specific writer, then it would cause it to never start
 
-     // flowing again.
 
-     // So, if this is awaiting a drain, then we just call it now.
 
-     // If we don't know, then assume that we are waiting for one.
 
-     if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
 
-   }
 
-   // If the user pushes more data while we're writing to dest then we'll end up
 
-   // in ondata again. However, we only want to increase awaitDrain once because
 
-   // dest will only emit one 'drain' event for the multiple writes.
 
-   // => Introduce a guard on increasing awaitDrain.
 
-   var increasedAwaitDrain = false;
 
-   src.on('data', ondata);
 
-   function ondata(chunk) {
 
-     debug('ondata');
 
-     increasedAwaitDrain = false;
 
-     var ret = dest.write(chunk);
 
-     if (false === ret && !increasedAwaitDrain) {
 
-       // If the user unpiped during `dest.write()`, it is possible
 
-       // to get stuck in a permanently paused state if that write
 
-       // also returned false.
 
-       // => Check whether `dest` is still a piping destination.
 
-       if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
 
-         debug('false write response, pause', src._readableState.awaitDrain);
 
-         src._readableState.awaitDrain++;
 
-         increasedAwaitDrain = true;
 
-       }
 
-       src.pause();
 
-     }
 
-   }
 
-   // if the dest has an error, then stop piping into it.
 
-   // however, don't suppress the throwing behavior for this.
 
-   function onerror(er) {
 
-     debug('onerror', er);
 
-     unpipe();
 
-     dest.removeListener('error', onerror);
 
-     if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
 
-   }
 
-   // Make sure our error handler is attached before userland ones.
 
-   prependListener(dest, 'error', onerror);
 
-   // Both close and finish should trigger unpipe, but only once.
 
-   function onclose() {
 
-     dest.removeListener('finish', onfinish);
 
-     unpipe();
 
-   }
 
-   dest.once('close', onclose);
 
-   function onfinish() {
 
-     debug('onfinish');
 
-     dest.removeListener('close', onclose);
 
-     unpipe();
 
-   }
 
-   dest.once('finish', onfinish);
 
-   function unpipe() {
 
-     debug('unpipe');
 
-     src.unpipe(dest);
 
-   }
 
-   // tell the dest that it's being piped to
 
-   dest.emit('pipe', src);
 
-   // start the flow if it hasn't been started already.
 
-   if (!state.flowing) {
 
-     debug('pipe resume');
 
-     src.resume();
 
-   }
 
-   return dest;
 
- };
 
- function pipeOnDrain(src) {
 
-   return function () {
 
-     var state = src._readableState;
 
-     debug('pipeOnDrain', state.awaitDrain);
 
-     if (state.awaitDrain) state.awaitDrain--;
 
-     if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
 
-       state.flowing = true;
 
-       flow(src);
 
-     }
 
-   };
 
- }
 
- Readable.prototype.unpipe = function (dest) {
 
-   var state = this._readableState;
 
-   var unpipeInfo = { hasUnpiped: false };
 
-   // if we're not piping anywhere, then do nothing.
 
-   if (state.pipesCount === 0) return this;
 
-   // just one destination.  most common case.
 
-   if (state.pipesCount === 1) {
 
-     // passed in one, but it's not the right one.
 
-     if (dest && dest !== state.pipes) return this;
 
-     if (!dest) dest = state.pipes;
 
-     // got a match.
 
-     state.pipes = null;
 
-     state.pipesCount = 0;
 
-     state.flowing = false;
 
-     if (dest) dest.emit('unpipe', this, unpipeInfo);
 
-     return this;
 
-   }
 
-   // slow case. multiple pipe destinations.
 
-   if (!dest) {
 
-     // remove all.
 
-     var dests = state.pipes;
 
-     var len = state.pipesCount;
 
-     state.pipes = null;
 
-     state.pipesCount = 0;
 
-     state.flowing = false;
 
-     for (var i = 0; i < len; i++) {
 
-       dests[i].emit('unpipe', this, unpipeInfo);
 
-     }return this;
 
-   }
 
-   // try to find the right one.
 
-   var index = indexOf(state.pipes, dest);
 
-   if (index === -1) return this;
 
-   state.pipes.splice(index, 1);
 
-   state.pipesCount -= 1;
 
-   if (state.pipesCount === 1) state.pipes = state.pipes[0];
 
-   dest.emit('unpipe', this, unpipeInfo);
 
-   return this;
 
- };
 
- // set up data events if they are asked for
 
- // Ensure readable listeners eventually get something
 
- Readable.prototype.on = function (ev, fn) {
 
-   var res = Stream.prototype.on.call(this, ev, fn);
 
-   if (ev === 'data') {
 
-     // Start flowing on next tick if stream isn't explicitly paused
 
-     if (this._readableState.flowing !== false) this.resume();
 
-   } else if (ev === 'readable') {
 
-     var state = this._readableState;
 
-     if (!state.endEmitted && !state.readableListening) {
 
-       state.readableListening = state.needReadable = true;
 
-       state.emittedReadable = false;
 
-       if (!state.reading) {
 
-         pna.nextTick(nReadingNextTick, this);
 
-       } else if (state.length) {
 
-         emitReadable(this);
 
-       }
 
-     }
 
-   }
 
-   return res;
 
- };
 
- Readable.prototype.addListener = Readable.prototype.on;
 
- function nReadingNextTick(self) {
 
-   debug('readable nexttick read 0');
 
-   self.read(0);
 
- }
 
- // pause() and resume() are remnants of the legacy readable stream API
 
- // If the user uses them, then switch into old mode.
 
- Readable.prototype.resume = function () {
 
-   var state = this._readableState;
 
-   if (!state.flowing) {
 
-     debug('resume');
 
-     state.flowing = true;
 
-     resume(this, state);
 
-   }
 
-   return this;
 
- };
 
- function resume(stream, state) {
 
-   if (!state.resumeScheduled) {
 
-     state.resumeScheduled = true;
 
-     pna.nextTick(resume_, stream, state);
 
-   }
 
- }
 
- function resume_(stream, state) {
 
-   if (!state.reading) {
 
-     debug('resume read 0');
 
-     stream.read(0);
 
-   }
 
-   state.resumeScheduled = false;
 
-   state.awaitDrain = 0;
 
-   stream.emit('resume');
 
-   flow(stream);
 
-   if (state.flowing && !state.reading) stream.read(0);
 
- }
 
- Readable.prototype.pause = function () {
 
-   debug('call pause flowing=%j', this._readableState.flowing);
 
-   if (false !== this._readableState.flowing) {
 
-     debug('pause');
 
-     this._readableState.flowing = false;
 
-     this.emit('pause');
 
-   }
 
-   return this;
 
- };
 
- function flow(stream) {
 
-   var state = stream._readableState;
 
-   debug('flow', state.flowing);
 
-   while (state.flowing && stream.read() !== null) {}
 
- }
 
- // wrap an old-style stream as the async data source.
 
- // This is *not* part of the readable stream interface.
 
- // It is an ugly unfortunate mess of history.
 
- Readable.prototype.wrap = function (stream) {
 
-   var _this = this;
 
-   var state = this._readableState;
 
-   var paused = false;
 
-   stream.on('end', function () {
 
-     debug('wrapped end');
 
-     if (state.decoder && !state.ended) {
 
-       var chunk = state.decoder.end();
 
-       if (chunk && chunk.length) _this.push(chunk);
 
-     }
 
-     _this.push(null);
 
-   });
 
-   stream.on('data', function (chunk) {
 
-     debug('wrapped data');
 
-     if (state.decoder) chunk = state.decoder.write(chunk);
 
-     // don't skip over falsy values in objectMode
 
-     if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
 
-     var ret = _this.push(chunk);
 
-     if (!ret) {
 
-       paused = true;
 
-       stream.pause();
 
-     }
 
-   });
 
-   // proxy all the other methods.
 
-   // important when wrapping filters and duplexes.
 
-   for (var i in stream) {
 
-     if (this[i] === undefined && typeof stream[i] === 'function') {
 
-       this[i] = function (method) {
 
-         return function () {
 
-           return stream[method].apply(stream, arguments);
 
-         };
 
-       }(i);
 
-     }
 
-   }
 
-   // proxy certain important events.
 
-   for (var n = 0; n < kProxyEvents.length; n++) {
 
-     stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));
 
-   }
 
-   // when we try to consume some more bytes, simply unpause the
 
-   // underlying stream.
 
-   this._read = function (n) {
 
-     debug('wrapped _read', n);
 
-     if (paused) {
 
-       paused = false;
 
-       stream.resume();
 
-     }
 
-   };
 
-   return this;
 
- };
 
- Object.defineProperty(Readable.prototype, 'readableHighWaterMark', {
 
-   // making it explicit this property is not enumerable
 
-   // because otherwise some prototype manipulation in
 
-   // userland will fail
 
-   enumerable: false,
 
-   get: function () {
 
-     return this._readableState.highWaterMark;
 
-   }
 
- });
 
- // exposed for testing purposes only.
 
- Readable._fromList = fromList;
 
- // Pluck off n bytes from an array of buffers.
 
- // Length is the combined lengths of all the buffers in the list.
 
- // This function is designed to be inlinable, so please take care when making
 
- // changes to the function body.
 
- function fromList(n, state) {
 
-   // nothing buffered
 
-   if (state.length === 0) return null;
 
-   var ret;
 
-   if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
 
-     // read it all, truncate the list
 
-     if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);
 
-     state.buffer.clear();
 
-   } else {
 
-     // read part of list
 
-     ret = fromListPartial(n, state.buffer, state.decoder);
 
-   }
 
-   return ret;
 
- }
 
- // Extracts only enough buffered data to satisfy the amount requested.
 
- // This function is designed to be inlinable, so please take care when making
 
- // changes to the function body.
 
- function fromListPartial(n, list, hasStrings) {
 
-   var ret;
 
-   if (n < list.head.data.length) {
 
-     // slice is the same for buffers and strings
 
-     ret = list.head.data.slice(0, n);
 
-     list.head.data = list.head.data.slice(n);
 
-   } else if (n === list.head.data.length) {
 
-     // first chunk is a perfect match
 
-     ret = list.shift();
 
-   } else {
 
-     // result spans more than one buffer
 
-     ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
 
-   }
 
-   return ret;
 
- }
 
- // Copies a specified amount of characters from the list of buffered data
 
- // chunks.
 
- // This function is designed to be inlinable, so please take care when making
 
- // changes to the function body.
 
- function copyFromBufferString(n, list) {
 
-   var p = list.head;
 
-   var c = 1;
 
-   var ret = p.data;
 
-   n -= ret.length;
 
-   while (p = p.next) {
 
-     var str = p.data;
 
-     var nb = n > str.length ? str.length : n;
 
-     if (nb === str.length) ret += str;else ret += str.slice(0, n);
 
-     n -= nb;
 
-     if (n === 0) {
 
-       if (nb === str.length) {
 
-         ++c;
 
-         if (p.next) list.head = p.next;else list.head = list.tail = null;
 
-       } else {
 
-         list.head = p;
 
-         p.data = str.slice(nb);
 
-       }
 
-       break;
 
-     }
 
-     ++c;
 
-   }
 
-   list.length -= c;
 
-   return ret;
 
- }
 
- // Copies a specified amount of bytes from the list of buffered data chunks.
 
- // This function is designed to be inlinable, so please take care when making
 
- // changes to the function body.
 
- function copyFromBuffer(n, list) {
 
-   var ret = Buffer.allocUnsafe(n);
 
-   var p = list.head;
 
-   var c = 1;
 
-   p.data.copy(ret);
 
-   n -= p.data.length;
 
-   while (p = p.next) {
 
-     var buf = p.data;
 
-     var nb = n > buf.length ? buf.length : n;
 
-     buf.copy(ret, ret.length - n, 0, nb);
 
-     n -= nb;
 
-     if (n === 0) {
 
-       if (nb === buf.length) {
 
-         ++c;
 
-         if (p.next) list.head = p.next;else list.head = list.tail = null;
 
-       } else {
 
-         list.head = p;
 
-         p.data = buf.slice(nb);
 
-       }
 
-       break;
 
-     }
 
-     ++c;
 
-   }
 
-   list.length -= c;
 
-   return ret;
 
- }
 
- function endReadable(stream) {
 
-   var state = stream._readableState;
 
-   // If we get here before consuming all the bytes, then that is a
 
-   // bug in node.  Should never happen.
 
-   if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
 
-   if (!state.endEmitted) {
 
-     state.ended = true;
 
-     pna.nextTick(endReadableNT, state, stream);
 
-   }
 
- }
 
- function endReadableNT(state, stream) {
 
-   // Check that we didn't get one last unshift.
 
-   if (!state.endEmitted && state.length === 0) {
 
-     state.endEmitted = true;
 
-     stream.readable = false;
 
-     stream.emit('end');
 
-   }
 
- }
 
- function indexOf(xs, x) {
 
-   for (var i = 0, l = xs.length; i < l; i++) {
 
-     if (xs[i] === x) return i;
 
-   }
 
-   return -1;
 
- }
 
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0), __webpack_require__(1)))
 
- /***/ }),
 
- /* 16 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- module.exports = __webpack_require__(9).EventEmitter;
 
- /***/ }),
 
- /* 17 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- "use strict";
 
- /*<replacement>*/
 
- var pna = __webpack_require__(6);
 
- /*</replacement>*/
 
- // undocumented cb() API, needed for core, not for public API
 
- function destroy(err, cb) {
 
-   var _this = this;
 
-   var readableDestroyed = this._readableState && this._readableState.destroyed;
 
-   var writableDestroyed = this._writableState && this._writableState.destroyed;
 
-   if (readableDestroyed || writableDestroyed) {
 
-     if (cb) {
 
-       cb(err);
 
-     } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {
 
-       pna.nextTick(emitErrorNT, this, err);
 
-     }
 
-     return this;
 
-   }
 
-   // we set destroyed to true before firing error callbacks in order
 
-   // to make it re-entrance safe in case destroy() is called within callbacks
 
-   if (this._readableState) {
 
-     this._readableState.destroyed = true;
 
-   }
 
-   // if this is a duplex stream mark the writable part as destroyed as well
 
-   if (this._writableState) {
 
-     this._writableState.destroyed = true;
 
-   }
 
-   this._destroy(err || null, function (err) {
 
-     if (!cb && err) {
 
-       pna.nextTick(emitErrorNT, _this, err);
 
-       if (_this._writableState) {
 
-         _this._writableState.errorEmitted = true;
 
-       }
 
-     } else if (cb) {
 
-       cb(err);
 
-     }
 
-   });
 
-   return this;
 
- }
 
- function undestroy() {
 
-   if (this._readableState) {
 
-     this._readableState.destroyed = false;
 
-     this._readableState.reading = false;
 
-     this._readableState.ended = false;
 
-     this._readableState.endEmitted = false;
 
-   }
 
-   if (this._writableState) {
 
-     this._writableState.destroyed = false;
 
-     this._writableState.ended = false;
 
-     this._writableState.ending = false;
 
-     this._writableState.finished = false;
 
-     this._writableState.errorEmitted = false;
 
-   }
 
- }
 
- function emitErrorNT(self, err) {
 
-   self.emit('error', err);
 
- }
 
- module.exports = {
 
-   destroy: destroy,
 
-   undestroy: undestroy
 
- };
 
- /***/ }),
 
- /* 18 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- "use strict";
 
- /* WEBPACK VAR INJECTION */(function(process, setImmediate, global) {// Copyright Joyent, Inc. and other Node contributors.
 
- //
 
- // Permission is hereby granted, free of charge, to any person obtaining a
 
- // copy of this software and associated documentation files (the
 
- // "Software"), to deal in the Software without restriction, including
 
- // without limitation the rights to use, copy, modify, merge, publish,
 
- // distribute, sublicense, and/or sell copies of the Software, and to permit
 
- // persons to whom the Software is furnished to do so, subject to the
 
- // following conditions:
 
- //
 
- // The above copyright notice and this permission notice shall be included
 
- // in all copies or substantial portions of the Software.
 
- //
 
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
 
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
 
- // A bit simpler than readable streams.
 
- // Implement an async ._write(chunk, encoding, cb), and it'll handle all
 
- // the drain event emission and buffering.
 
- /*<replacement>*/
 
- var pna = __webpack_require__(6);
 
- /*</replacement>*/
 
- module.exports = Writable;
 
- /* <replacement> */
 
- function WriteReq(chunk, encoding, cb) {
 
-   this.chunk = chunk;
 
-   this.encoding = encoding;
 
-   this.callback = cb;
 
-   this.next = null;
 
- }
 
- // It seems a linked list but it is not
 
- // there will be only 2 of these for each stream
 
- function CorkedRequest(state) {
 
-   var _this = this;
 
-   this.next = null;
 
-   this.entry = null;
 
-   this.finish = function () {
 
-     onCorkedFinish(_this, state);
 
-   };
 
- }
 
- /* </replacement> */
 
- /*<replacement>*/
 
- var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;
 
- /*</replacement>*/
 
- /*<replacement>*/
 
- var Duplex;
 
- /*</replacement>*/
 
- Writable.WritableState = WritableState;
 
- /*<replacement>*/
 
- var util = Object.create(__webpack_require__(5));
 
- util.inherits = __webpack_require__(2);
 
- /*</replacement>*/
 
- /*<replacement>*/
 
- var internalUtil = {
 
-   deprecate: __webpack_require__(38)
 
- };
 
- /*</replacement>*/
 
- /*<replacement>*/
 
- var Stream = __webpack_require__(16);
 
- /*</replacement>*/
 
- /*<replacement>*/
 
- var Buffer = __webpack_require__(7).Buffer;
 
- var OurUint8Array = global.Uint8Array || function () {};
 
- function _uint8ArrayToBuffer(chunk) {
 
-   return Buffer.from(chunk);
 
- }
 
- function _isUint8Array(obj) {
 
-   return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
 
- }
 
- /*</replacement>*/
 
- var destroyImpl = __webpack_require__(17);
 
- util.inherits(Writable, Stream);
 
- function nop() {}
 
- function WritableState(options, stream) {
 
-   Duplex = Duplex || __webpack_require__(4);
 
-   options = options || {};
 
-   // Duplex streams are both readable and writable, but share
 
-   // the same options object.
 
-   // However, some cases require setting options to different
 
-   // values for the readable and the writable sides of the duplex stream.
 
-   // These options can be provided separately as readableXXX and writableXXX.
 
-   var isDuplex = stream instanceof Duplex;
 
-   // object stream flag to indicate whether or not this stream
 
-   // contains buffers or objects.
 
-   this.objectMode = !!options.objectMode;
 
-   if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
 
-   // the point at which write() starts returning false
 
-   // Note: 0 is a valid value, means that we always return false if
 
-   // the entire buffer is not flushed immediately on write()
 
-   var hwm = options.highWaterMark;
 
-   var writableHwm = options.writableHighWaterMark;
 
-   var defaultHwm = this.objectMode ? 16 : 16 * 1024;
 
-   if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;
 
-   // cast to ints.
 
-   this.highWaterMark = Math.floor(this.highWaterMark);
 
-   // if _final has been called
 
-   this.finalCalled = false;
 
-   // drain event flag.
 
-   this.needDrain = false;
 
-   // at the start of calling end()
 
-   this.ending = false;
 
-   // when end() has been called, and returned
 
-   this.ended = false;
 
-   // when 'finish' is emitted
 
-   this.finished = false;
 
-   // has it been destroyed
 
-   this.destroyed = false;
 
-   // should we decode strings into buffers before passing to _write?
 
-   // this is here so that some node-core streams can optimize string
 
-   // handling at a lower level.
 
-   var noDecode = options.decodeStrings === false;
 
-   this.decodeStrings = !noDecode;
 
-   // Crypto is kind of old and crusty.  Historically, its default string
 
-   // encoding is 'binary' so we have to make this configurable.
 
-   // Everything else in the universe uses 'utf8', though.
 
-   this.defaultEncoding = options.defaultEncoding || 'utf8';
 
-   // not an actual buffer we keep track of, but a measurement
 
-   // of how much we're waiting to get pushed to some underlying
 
-   // socket or file.
 
-   this.length = 0;
 
-   // a flag to see when we're in the middle of a write.
 
-   this.writing = false;
 
-   // when true all writes will be buffered until .uncork() call
 
-   this.corked = 0;
 
-   // a flag to be able to tell if the onwrite cb is called immediately,
 
-   // or on a later tick.  We set this to true at first, because any
 
-   // actions that shouldn't happen until "later" should generally also
 
-   // not happen before the first write call.
 
-   this.sync = true;
 
-   // a flag to know if we're processing previously buffered items, which
 
-   // may call the _write() callback in the same tick, so that we don't
 
-   // end up in an overlapped onwrite situation.
 
-   this.bufferProcessing = false;
 
-   // the callback that's passed to _write(chunk,cb)
 
-   this.onwrite = function (er) {
 
-     onwrite(stream, er);
 
-   };
 
-   // the callback that the user supplies to write(chunk,encoding,cb)
 
-   this.writecb = null;
 
-   // the amount that is being written when _write is called.
 
-   this.writelen = 0;
 
-   this.bufferedRequest = null;
 
-   this.lastBufferedRequest = null;
 
-   // number of pending user-supplied write callbacks
 
-   // this must be 0 before 'finish' can be emitted
 
-   this.pendingcb = 0;
 
-   // emit prefinish if the only thing we're waiting for is _write cbs
 
-   // This is relevant for synchronous Transform streams
 
-   this.prefinished = false;
 
-   // True if the error was already emitted and should not be thrown again
 
-   this.errorEmitted = false;
 
-   // count buffered requests
 
-   this.bufferedRequestCount = 0;
 
-   // allocate the first CorkedRequest, there is always
 
-   // one allocated and free to use, and we maintain at most two
 
-   this.corkedRequestsFree = new CorkedRequest(this);
 
- }
 
- WritableState.prototype.getBuffer = function getBuffer() {
 
-   var current = this.bufferedRequest;
 
-   var out = [];
 
-   while (current) {
 
-     out.push(current);
 
-     current = current.next;
 
-   }
 
-   return out;
 
- };
 
- (function () {
 
-   try {
 
-     Object.defineProperty(WritableState.prototype, 'buffer', {
 
-       get: internalUtil.deprecate(function () {
 
-         return this.getBuffer();
 
-       }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')
 
-     });
 
-   } catch (_) {}
 
- })();
 
- // Test _writableState for inheritance to account for Duplex streams,
 
- // whose prototype chain only points to Readable.
 
- var realHasInstance;
 
- if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
 
-   realHasInstance = Function.prototype[Symbol.hasInstance];
 
-   Object.defineProperty(Writable, Symbol.hasInstance, {
 
-     value: function (object) {
 
-       if (realHasInstance.call(this, object)) return true;
 
-       if (this !== Writable) return false;
 
-       return object && object._writableState instanceof WritableState;
 
-     }
 
-   });
 
- } else {
 
-   realHasInstance = function (object) {
 
-     return object instanceof this;
 
-   };
 
- }
 
- function Writable(options) {
 
-   Duplex = Duplex || __webpack_require__(4);
 
-   // Writable ctor is applied to Duplexes, too.
 
-   // `realHasInstance` is necessary because using plain `instanceof`
 
-   // would return false, as no `_writableState` property is attached.
 
-   // Trying to use the custom `instanceof` for Writable here will also break the
 
-   // Node.js LazyTransform implementation, which has a non-trivial getter for
 
-   // `_writableState` that would lead to infinite recursion.
 
-   if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
 
-     return new Writable(options);
 
-   }
 
-   this._writableState = new WritableState(options, this);
 
-   // legacy.
 
-   this.writable = true;
 
-   if (options) {
 
-     if (typeof options.write === 'function') this._write = options.write;
 
-     if (typeof options.writev === 'function') this._writev = options.writev;
 
-     if (typeof options.destroy === 'function') this._destroy = options.destroy;
 
-     if (typeof options.final === 'function') this._final = options.final;
 
-   }
 
-   Stream.call(this);
 
- }
 
- // Otherwise people can pipe Writable streams, which is just wrong.
 
- Writable.prototype.pipe = function () {
 
-   this.emit('error', new Error('Cannot pipe, not readable'));
 
- };
 
- function writeAfterEnd(stream, cb) {
 
-   var er = new Error('write after end');
 
-   // TODO: defer error events consistently everywhere, not just the cb
 
-   stream.emit('error', er);
 
-   pna.nextTick(cb, er);
 
- }
 
- // Checks that a user-supplied chunk is valid, especially for the particular
 
- // mode the stream is in. Currently this means that `null` is never accepted
 
- // and undefined/non-string values are only allowed in object mode.
 
- function validChunk(stream, state, chunk, cb) {
 
-   var valid = true;
 
-   var er = false;
 
-   if (chunk === null) {
 
-     er = new TypeError('May not write null values to stream');
 
-   } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
 
-     er = new TypeError('Invalid non-string/buffer chunk');
 
-   }
 
-   if (er) {
 
-     stream.emit('error', er);
 
-     pna.nextTick(cb, er);
 
-     valid = false;
 
-   }
 
-   return valid;
 
- }
 
- Writable.prototype.write = function (chunk, encoding, cb) {
 
-   var state = this._writableState;
 
-   var ret = false;
 
-   var isBuf = !state.objectMode && _isUint8Array(chunk);
 
-   if (isBuf && !Buffer.isBuffer(chunk)) {
 
-     chunk = _uint8ArrayToBuffer(chunk);
 
-   }
 
-   if (typeof encoding === 'function') {
 
-     cb = encoding;
 
-     encoding = null;
 
-   }
 
-   if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
 
-   if (typeof cb !== 'function') cb = nop;
 
-   if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {
 
-     state.pendingcb++;
 
-     ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
 
-   }
 
-   return ret;
 
- };
 
- Writable.prototype.cork = function () {
 
-   var state = this._writableState;
 
-   state.corked++;
 
- };
 
- Writable.prototype.uncork = function () {
 
-   var state = this._writableState;
 
-   if (state.corked) {
 
-     state.corked--;
 
-     if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
 
-   }
 
- };
 
- Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
 
-   // node::ParseEncoding() requires lower case.
 
-   if (typeof encoding === 'string') encoding = encoding.toLowerCase();
 
-   if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);
 
-   this._writableState.defaultEncoding = encoding;
 
-   return this;
 
- };
 
- function decodeChunk(state, chunk, encoding) {
 
-   if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
 
-     chunk = Buffer.from(chunk, encoding);
 
-   }
 
-   return chunk;
 
- }
 
- Object.defineProperty(Writable.prototype, 'writableHighWaterMark', {
 
-   // making it explicit this property is not enumerable
 
-   // because otherwise some prototype manipulation in
 
-   // userland will fail
 
-   enumerable: false,
 
-   get: function () {
 
-     return this._writableState.highWaterMark;
 
-   }
 
- });
 
- // if we're already writing something, then just put this
 
- // in the queue, and wait our turn.  Otherwise, call _write
 
- // If we return false, then we need a drain event, so set that flag.
 
- function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
 
-   if (!isBuf) {
 
-     var newChunk = decodeChunk(state, chunk, encoding);
 
-     if (chunk !== newChunk) {
 
-       isBuf = true;
 
-       encoding = 'buffer';
 
-       chunk = newChunk;
 
-     }
 
-   }
 
-   var len = state.objectMode ? 1 : chunk.length;
 
-   state.length += len;
 
-   var ret = state.length < state.highWaterMark;
 
-   // we must ensure that previous needDrain will not be reset to false.
 
-   if (!ret) state.needDrain = true;
 
-   if (state.writing || state.corked) {
 
-     var last = state.lastBufferedRequest;
 
-     state.lastBufferedRequest = {
 
-       chunk: chunk,
 
-       encoding: encoding,
 
-       isBuf: isBuf,
 
-       callback: cb,
 
-       next: null
 
-     };
 
-     if (last) {
 
-       last.next = state.lastBufferedRequest;
 
-     } else {
 
-       state.bufferedRequest = state.lastBufferedRequest;
 
-     }
 
-     state.bufferedRequestCount += 1;
 
-   } else {
 
-     doWrite(stream, state, false, len, chunk, encoding, cb);
 
-   }
 
-   return ret;
 
- }
 
- function doWrite(stream, state, writev, len, chunk, encoding, cb) {
 
-   state.writelen = len;
 
-   state.writecb = cb;
 
-   state.writing = true;
 
-   state.sync = true;
 
-   if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
 
-   state.sync = false;
 
- }
 
- function onwriteError(stream, state, sync, er, cb) {
 
-   --state.pendingcb;
 
-   if (sync) {
 
-     // defer the callback if we are being called synchronously
 
-     // to avoid piling up things on the stack
 
-     pna.nextTick(cb, er);
 
-     // this can emit finish, and it will always happen
 
-     // after error
 
-     pna.nextTick(finishMaybe, stream, state);
 
-     stream._writableState.errorEmitted = true;
 
-     stream.emit('error', er);
 
-   } else {
 
-     // the caller expect this to happen before if
 
-     // it is async
 
-     cb(er);
 
-     stream._writableState.errorEmitted = true;
 
-     stream.emit('error', er);
 
-     // this can emit finish, but finish must
 
-     // always follow error
 
-     finishMaybe(stream, state);
 
-   }
 
- }
 
- function onwriteStateUpdate(state) {
 
-   state.writing = false;
 
-   state.writecb = null;
 
-   state.length -= state.writelen;
 
-   state.writelen = 0;
 
- }
 
- function onwrite(stream, er) {
 
-   var state = stream._writableState;
 
-   var sync = state.sync;
 
-   var cb = state.writecb;
 
-   onwriteStateUpdate(state);
 
-   if (er) onwriteError(stream, state, sync, er, cb);else {
 
-     // Check if we're actually ready to finish, but don't emit yet
 
-     var finished = needFinish(state);
 
-     if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
 
-       clearBuffer(stream, state);
 
-     }
 
-     if (sync) {
 
-       /*<replacement>*/
 
-       asyncWrite(afterWrite, stream, state, finished, cb);
 
-       /*</replacement>*/
 
-     } else {
 
-       afterWrite(stream, state, finished, cb);
 
-     }
 
-   }
 
- }
 
- function afterWrite(stream, state, finished, cb) {
 
-   if (!finished) onwriteDrain(stream, state);
 
-   state.pendingcb--;
 
-   cb();
 
-   finishMaybe(stream, state);
 
- }
 
- // Must force callback to be called on nextTick, so that we don't
 
- // emit 'drain' before the write() consumer gets the 'false' return
 
- // value, and has a chance to attach a 'drain' listener.
 
- function onwriteDrain(stream, state) {
 
-   if (state.length === 0 && state.needDrain) {
 
-     state.needDrain = false;
 
-     stream.emit('drain');
 
-   }
 
- }
 
- // if there's something in the buffer waiting, then process it
 
- function clearBuffer(stream, state) {
 
-   state.bufferProcessing = true;
 
-   var entry = state.bufferedRequest;
 
-   if (stream._writev && entry && entry.next) {
 
-     // Fast case, write everything using _writev()
 
-     var l = state.bufferedRequestCount;
 
-     var buffer = new Array(l);
 
-     var holder = state.corkedRequestsFree;
 
-     holder.entry = entry;
 
-     var count = 0;
 
-     var allBuffers = true;
 
-     while (entry) {
 
-       buffer[count] = entry;
 
-       if (!entry.isBuf) allBuffers = false;
 
-       entry = entry.next;
 
-       count += 1;
 
-     }
 
-     buffer.allBuffers = allBuffers;
 
-     doWrite(stream, state, true, state.length, buffer, '', holder.finish);
 
-     // doWrite is almost always async, defer these to save a bit of time
 
-     // as the hot path ends with doWrite
 
-     state.pendingcb++;
 
-     state.lastBufferedRequest = null;
 
-     if (holder.next) {
 
-       state.corkedRequestsFree = holder.next;
 
-       holder.next = null;
 
-     } else {
 
-       state.corkedRequestsFree = new CorkedRequest(state);
 
-     }
 
-     state.bufferedRequestCount = 0;
 
-   } else {
 
-     // Slow case, write chunks one-by-one
 
-     while (entry) {
 
-       var chunk = entry.chunk;
 
-       var encoding = entry.encoding;
 
-       var cb = entry.callback;
 
-       var len = state.objectMode ? 1 : chunk.length;
 
-       doWrite(stream, state, false, len, chunk, encoding, cb);
 
-       entry = entry.next;
 
-       state.bufferedRequestCount--;
 
-       // if we didn't call the onwrite immediately, then
 
-       // it means that we need to wait until it does.
 
-       // also, that means that the chunk and cb are currently
 
-       // being processed, so move the buffer counter past them.
 
-       if (state.writing) {
 
-         break;
 
-       }
 
-     }
 
-     if (entry === null) state.lastBufferedRequest = null;
 
-   }
 
-   state.bufferedRequest = entry;
 
-   state.bufferProcessing = false;
 
- }
 
- Writable.prototype._write = function (chunk, encoding, cb) {
 
-   cb(new Error('_write() is not implemented'));
 
- };
 
- Writable.prototype._writev = null;
 
- Writable.prototype.end = function (chunk, encoding, cb) {
 
-   var state = this._writableState;
 
-   if (typeof chunk === 'function') {
 
-     cb = chunk;
 
-     chunk = null;
 
-     encoding = null;
 
-   } else if (typeof encoding === 'function') {
 
-     cb = encoding;
 
-     encoding = null;
 
-   }
 
-   if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
 
-   // .end() fully uncorks
 
-   if (state.corked) {
 
-     state.corked = 1;
 
-     this.uncork();
 
-   }
 
-   // ignore unnecessary end() calls.
 
-   if (!state.ending && !state.finished) endWritable(this, state, cb);
 
- };
 
- function needFinish(state) {
 
-   return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
 
- }
 
- function callFinal(stream, state) {
 
-   stream._final(function (err) {
 
-     state.pendingcb--;
 
-     if (err) {
 
-       stream.emit('error', err);
 
-     }
 
-     state.prefinished = true;
 
-     stream.emit('prefinish');
 
-     finishMaybe(stream, state);
 
-   });
 
- }
 
- function prefinish(stream, state) {
 
-   if (!state.prefinished && !state.finalCalled) {
 
-     if (typeof stream._final === 'function') {
 
-       state.pendingcb++;
 
-       state.finalCalled = true;
 
-       pna.nextTick(callFinal, stream, state);
 
-     } else {
 
-       state.prefinished = true;
 
-       stream.emit('prefinish');
 
-     }
 
-   }
 
- }
 
- function finishMaybe(stream, state) {
 
-   var need = needFinish(state);
 
-   if (need) {
 
-     prefinish(stream, state);
 
-     if (state.pendingcb === 0) {
 
-       state.finished = true;
 
-       stream.emit('finish');
 
-     }
 
-   }
 
-   return need;
 
- }
 
- function endWritable(stream, state, cb) {
 
-   state.ending = true;
 
-   finishMaybe(stream, state);
 
-   if (cb) {
 
-     if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);
 
-   }
 
-   state.ended = true;
 
-   stream.writable = false;
 
- }
 
- function onCorkedFinish(corkReq, state, err) {
 
-   var entry = corkReq.entry;
 
-   corkReq.entry = null;
 
-   while (entry) {
 
-     var cb = entry.callback;
 
-     state.pendingcb--;
 
-     cb(err);
 
-     entry = entry.next;
 
-   }
 
-   if (state.corkedRequestsFree) {
 
-     state.corkedRequestsFree.next = corkReq;
 
-   } else {
 
-     state.corkedRequestsFree = corkReq;
 
-   }
 
- }
 
- Object.defineProperty(Writable.prototype, 'destroyed', {
 
-   get: function () {
 
-     if (this._writableState === undefined) {
 
-       return false;
 
-     }
 
-     return this._writableState.destroyed;
 
-   },
 
-   set: function (value) {
 
-     // we ignore the value if the stream
 
-     // has not been initialized yet
 
-     if (!this._writableState) {
 
-       return;
 
-     }
 
-     // backward compatibility, the user is explicitly
 
-     // managing destroyed
 
-     this._writableState.destroyed = value;
 
-   }
 
- });
 
- Writable.prototype.destroy = destroyImpl.destroy;
 
- Writable.prototype._undestroy = destroyImpl.undestroy;
 
- Writable.prototype._destroy = function (err, cb) {
 
-   this.end();
 
-   cb(err);
 
- };
 
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1), __webpack_require__(36).setImmediate, __webpack_require__(0)))
 
- /***/ }),
 
- /* 19 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- "use strict";
 
- // Copyright Joyent, Inc. and other Node contributors.
 
- //
 
- // Permission is hereby granted, free of charge, to any person obtaining a
 
- // copy of this software and associated documentation files (the
 
- // "Software"), to deal in the Software without restriction, including
 
- // without limitation the rights to use, copy, modify, merge, publish,
 
- // distribute, sublicense, and/or sell copies of the Software, and to permit
 
- // persons to whom the Software is furnished to do so, subject to the
 
- // following conditions:
 
- //
 
- // The above copyright notice and this permission notice shall be included
 
- // in all copies or substantial portions of the Software.
 
- //
 
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
 
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
 
- /*<replacement>*/
 
- var Buffer = __webpack_require__(7).Buffer;
 
- /*</replacement>*/
 
- var isEncoding = Buffer.isEncoding || function (encoding) {
 
-   encoding = '' + encoding;
 
-   switch (encoding && encoding.toLowerCase()) {
 
-     case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':
 
-       return true;
 
-     default:
 
-       return false;
 
-   }
 
- };
 
- function _normalizeEncoding(enc) {
 
-   if (!enc) return 'utf8';
 
-   var retried;
 
-   while (true) {
 
-     switch (enc) {
 
-       case 'utf8':
 
-       case 'utf-8':
 
-         return 'utf8';
 
-       case 'ucs2':
 
-       case 'ucs-2':
 
-       case 'utf16le':
 
-       case 'utf-16le':
 
-         return 'utf16le';
 
-       case 'latin1':
 
-       case 'binary':
 
-         return 'latin1';
 
-       case 'base64':
 
-       case 'ascii':
 
-       case 'hex':
 
-         return enc;
 
-       default:
 
-         if (retried) return; // undefined
 
-         enc = ('' + enc).toLowerCase();
 
-         retried = true;
 
-     }
 
-   }
 
- };
 
- // Do not cache `Buffer.isEncoding` when checking encoding names as some
 
- // modules monkey-patch it to support additional encodings
 
- function normalizeEncoding(enc) {
 
-   var nenc = _normalizeEncoding(enc);
 
-   if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);
 
-   return nenc || enc;
 
- }
 
- // StringDecoder provides an interface for efficiently splitting a series of
 
- // buffers into a series of JS strings without breaking apart multi-byte
 
- // characters.
 
- exports.StringDecoder = StringDecoder;
 
- function StringDecoder(encoding) {
 
-   this.encoding = normalizeEncoding(encoding);
 
-   var nb;
 
-   switch (this.encoding) {
 
-     case 'utf16le':
 
-       this.text = utf16Text;
 
-       this.end = utf16End;
 
-       nb = 4;
 
-       break;
 
-     case 'utf8':
 
-       this.fillLast = utf8FillLast;
 
-       nb = 4;
 
-       break;
 
-     case 'base64':
 
-       this.text = base64Text;
 
-       this.end = base64End;
 
-       nb = 3;
 
-       break;
 
-     default:
 
-       this.write = simpleWrite;
 
-       this.end = simpleEnd;
 
-       return;
 
-   }
 
-   this.lastNeed = 0;
 
-   this.lastTotal = 0;
 
-   this.lastChar = Buffer.allocUnsafe(nb);
 
- }
 
- StringDecoder.prototype.write = function (buf) {
 
-   if (buf.length === 0) return '';
 
-   var r;
 
-   var i;
 
-   if (this.lastNeed) {
 
-     r = this.fillLast(buf);
 
-     if (r === undefined) return '';
 
-     i = this.lastNeed;
 
-     this.lastNeed = 0;
 
-   } else {
 
-     i = 0;
 
-   }
 
-   if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);
 
-   return r || '';
 
- };
 
- StringDecoder.prototype.end = utf8End;
 
- // Returns only complete characters in a Buffer
 
- StringDecoder.prototype.text = utf8Text;
 
- // Attempts to complete a partial non-UTF-8 character using bytes from a Buffer
 
- StringDecoder.prototype.fillLast = function (buf) {
 
-   if (this.lastNeed <= buf.length) {
 
-     buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);
 
-     return this.lastChar.toString(this.encoding, 0, this.lastTotal);
 
-   }
 
-   buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);
 
-   this.lastNeed -= buf.length;
 
- };
 
- // Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a
 
- // continuation byte. If an invalid byte is detected, -2 is returned.
 
- function utf8CheckByte(byte) {
 
-   if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;
 
-   return byte >> 6 === 0x02 ? -1 : -2;
 
- }
 
- // Checks at most 3 bytes at the end of a Buffer in order to detect an
 
- // incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)
 
- // needed to complete the UTF-8 character (if applicable) are returned.
 
- function utf8CheckIncomplete(self, buf, i) {
 
-   var j = buf.length - 1;
 
-   if (j < i) return 0;
 
-   var nb = utf8CheckByte(buf[j]);
 
-   if (nb >= 0) {
 
-     if (nb > 0) self.lastNeed = nb - 1;
 
-     return nb;
 
-   }
 
-   if (--j < i || nb === -2) return 0;
 
-   nb = utf8CheckByte(buf[j]);
 
-   if (nb >= 0) {
 
-     if (nb > 0) self.lastNeed = nb - 2;
 
-     return nb;
 
-   }
 
-   if (--j < i || nb === -2) return 0;
 
-   nb = utf8CheckByte(buf[j]);
 
-   if (nb >= 0) {
 
-     if (nb > 0) {
 
-       if (nb === 2) nb = 0;else self.lastNeed = nb - 3;
 
-     }
 
-     return nb;
 
-   }
 
-   return 0;
 
- }
 
- // Validates as many continuation bytes for a multi-byte UTF-8 character as
 
- // needed or are available. If we see a non-continuation byte where we expect
 
- // one, we "replace" the validated continuation bytes we've seen so far with
 
- // a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding
 
- // behavior. The continuation byte check is included three times in the case
 
- // where all of the continuation bytes for a character exist in the same buffer.
 
- // It is also done this way as a slight performance increase instead of using a
 
- // loop.
 
- function utf8CheckExtraBytes(self, buf, p) {
 
-   if ((buf[0] & 0xC0) !== 0x80) {
 
-     self.lastNeed = 0;
 
-     return '\ufffd';
 
-   }
 
-   if (self.lastNeed > 1 && buf.length > 1) {
 
-     if ((buf[1] & 0xC0) !== 0x80) {
 
-       self.lastNeed = 1;
 
-       return '\ufffd';
 
-     }
 
-     if (self.lastNeed > 2 && buf.length > 2) {
 
-       if ((buf[2] & 0xC0) !== 0x80) {
 
-         self.lastNeed = 2;
 
-         return '\ufffd';
 
-       }
 
-     }
 
-   }
 
- }
 
- // Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.
 
- function utf8FillLast(buf) {
 
-   var p = this.lastTotal - this.lastNeed;
 
-   var r = utf8CheckExtraBytes(this, buf, p);
 
-   if (r !== undefined) return r;
 
-   if (this.lastNeed <= buf.length) {
 
-     buf.copy(this.lastChar, p, 0, this.lastNeed);
 
-     return this.lastChar.toString(this.encoding, 0, this.lastTotal);
 
-   }
 
-   buf.copy(this.lastChar, p, 0, buf.length);
 
-   this.lastNeed -= buf.length;
 
- }
 
- // Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a
 
- // partial character, the character's bytes are buffered until the required
 
- // number of bytes are available.
 
- function utf8Text(buf, i) {
 
-   var total = utf8CheckIncomplete(this, buf, i);
 
-   if (!this.lastNeed) return buf.toString('utf8', i);
 
-   this.lastTotal = total;
 
-   var end = buf.length - (total - this.lastNeed);
 
-   buf.copy(this.lastChar, 0, end);
 
-   return buf.toString('utf8', i, end);
 
- }
 
- // For UTF-8, a replacement character is added when ending on a partial
 
- // character.
 
- function utf8End(buf) {
 
-   var r = buf && buf.length ? this.write(buf) : '';
 
-   if (this.lastNeed) return r + '\ufffd';
 
-   return r;
 
- }
 
- // UTF-16LE typically needs two bytes per character, but even if we have an even
 
- // number of bytes available, we need to check if we end on a leading/high
 
- // surrogate. In that case, we need to wait for the next two bytes in order to
 
- // decode the last character properly.
 
- function utf16Text(buf, i) {
 
-   if ((buf.length - i) % 2 === 0) {
 
-     var r = buf.toString('utf16le', i);
 
-     if (r) {
 
-       var c = r.charCodeAt(r.length - 1);
 
-       if (c >= 0xD800 && c <= 0xDBFF) {
 
-         this.lastNeed = 2;
 
-         this.lastTotal = 4;
 
-         this.lastChar[0] = buf[buf.length - 2];
 
-         this.lastChar[1] = buf[buf.length - 1];
 
-         return r.slice(0, -1);
 
-       }
 
-     }
 
-     return r;
 
-   }
 
-   this.lastNeed = 1;
 
-   this.lastTotal = 2;
 
-   this.lastChar[0] = buf[buf.length - 1];
 
-   return buf.toString('utf16le', i, buf.length - 1);
 
- }
 
- // For UTF-16LE we do not explicitly append special replacement characters if we
 
- // end on a partial character, we simply let v8 handle that.
 
- function utf16End(buf) {
 
-   var r = buf && buf.length ? this.write(buf) : '';
 
-   if (this.lastNeed) {
 
-     var end = this.lastTotal - this.lastNeed;
 
-     return r + this.lastChar.toString('utf16le', 0, end);
 
-   }
 
-   return r;
 
- }
 
- function base64Text(buf, i) {
 
-   var n = (buf.length - i) % 3;
 
-   if (n === 0) return buf.toString('base64', i);
 
-   this.lastNeed = 3 - n;
 
-   this.lastTotal = 3;
 
-   if (n === 1) {
 
-     this.lastChar[0] = buf[buf.length - 1];
 
-   } else {
 
-     this.lastChar[0] = buf[buf.length - 2];
 
-     this.lastChar[1] = buf[buf.length - 1];
 
-   }
 
-   return buf.toString('base64', i, buf.length - n);
 
- }
 
- function base64End(buf) {
 
-   var r = buf && buf.length ? this.write(buf) : '';
 
-   if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);
 
-   return r;
 
- }
 
- // Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)
 
- function simpleWrite(buf) {
 
-   return buf.toString(this.encoding);
 
- }
 
- function simpleEnd(buf) {
 
-   return buf && buf.length ? this.write(buf) : '';
 
- }
 
- /***/ }),
 
- /* 20 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- "use strict";
 
- // Copyright Joyent, Inc. and other Node contributors.
 
- //
 
- // Permission is hereby granted, free of charge, to any person obtaining a
 
- // copy of this software and associated documentation files (the
 
- // "Software"), to deal in the Software without restriction, including
 
- // without limitation the rights to use, copy, modify, merge, publish,
 
- // distribute, sublicense, and/or sell copies of the Software, and to permit
 
- // persons to whom the Software is furnished to do so, subject to the
 
- // following conditions:
 
- //
 
- // The above copyright notice and this permission notice shall be included
 
- // in all copies or substantial portions of the Software.
 
- //
 
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
 
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
 
- // a transform stream is a readable/writable stream where you do
 
- // something with the data.  Sometimes it's called a "filter",
 
- // but that's not a great name for it, since that implies a thing where
 
- // some bits pass through, and others are simply ignored.  (That would
 
- // be a valid example of a transform, of course.)
 
- //
 
- // While the output is causally related to the input, it's not a
 
- // necessarily symmetric or synchronous transformation.  For example,
 
- // a zlib stream might take multiple plain-text writes(), and then
 
- // emit a single compressed chunk some time in the future.
 
- //
 
- // Here's how this works:
 
- //
 
- // The Transform stream has all the aspects of the readable and writable
 
- // stream classes.  When you write(chunk), that calls _write(chunk,cb)
 
- // internally, and returns false if there's a lot of pending writes
 
- // buffered up.  When you call read(), that calls _read(n) until
 
- // there's enough pending readable data buffered up.
 
- //
 
- // In a transform stream, the written data is placed in a buffer.  When
 
- // _read(n) is called, it transforms the queued up data, calling the
 
- // buffered _write cb's as it consumes chunks.  If consuming a single
 
- // written chunk would result in multiple output chunks, then the first
 
- // outputted bit calls the readcb, and subsequent chunks just go into
 
- // the read buffer, and will cause it to emit 'readable' if necessary.
 
- //
 
- // This way, back-pressure is actually determined by the reading side,
 
- // since _read has to be called to start processing a new chunk.  However,
 
- // a pathological inflate type of transform can cause excessive buffering
 
- // here.  For example, imagine a stream where every byte of input is
 
- // interpreted as an integer from 0-255, and then results in that many
 
- // bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in
 
- // 1kb of data being output.  In this case, you could write a very small
 
- // amount of input, and end up with a very large amount of output.  In
 
- // such a pathological inflating mechanism, there'd be no way to tell
 
- // the system to stop doing the transform.  A single 4MB write could
 
- // cause the system to run out of memory.
 
- //
 
- // However, even in such a pathological case, only a single written chunk
 
- // would be consumed, and then the rest would wait (un-transformed) until
 
- // the results of the previous transformed chunk were consumed.
 
- module.exports = Transform;
 
- var Duplex = __webpack_require__(4);
 
- /*<replacement>*/
 
- var util = Object.create(__webpack_require__(5));
 
- util.inherits = __webpack_require__(2);
 
- /*</replacement>*/
 
- util.inherits(Transform, Duplex);
 
- function afterTransform(er, data) {
 
-   var ts = this._transformState;
 
-   ts.transforming = false;
 
-   var cb = ts.writecb;
 
-   if (!cb) {
 
-     return this.emit('error', new Error('write callback called multiple times'));
 
-   }
 
-   ts.writechunk = null;
 
-   ts.writecb = null;
 
-   if (data != null) // single equals check for both `null` and `undefined`
 
-     this.push(data);
 
-   cb(er);
 
-   var rs = this._readableState;
 
-   rs.reading = false;
 
-   if (rs.needReadable || rs.length < rs.highWaterMark) {
 
-     this._read(rs.highWaterMark);
 
-   }
 
- }
 
- function Transform(options) {
 
-   if (!(this instanceof Transform)) return new Transform(options);
 
-   Duplex.call(this, options);
 
-   this._transformState = {
 
-     afterTransform: afterTransform.bind(this),
 
-     needTransform: false,
 
-     transforming: false,
 
-     writecb: null,
 
-     writechunk: null,
 
-     writeencoding: null
 
-   };
 
-   // start out asking for a readable event once data is transformed.
 
-   this._readableState.needReadable = true;
 
-   // we have implemented the _read method, and done the other things
 
-   // that Readable wants before the first _read call, so unset the
 
-   // sync guard flag.
 
-   this._readableState.sync = false;
 
-   if (options) {
 
-     if (typeof options.transform === 'function') this._transform = options.transform;
 
-     if (typeof options.flush === 'function') this._flush = options.flush;
 
-   }
 
-   // When the writable side finishes, then flush out anything remaining.
 
-   this.on('prefinish', prefinish);
 
- }
 
- function prefinish() {
 
-   var _this = this;
 
-   if (typeof this._flush === 'function') {
 
-     this._flush(function (er, data) {
 
-       done(_this, er, data);
 
-     });
 
-   } else {
 
-     done(this, null, null);
 
-   }
 
- }
 
- Transform.prototype.push = function (chunk, encoding) {
 
-   this._transformState.needTransform = false;
 
-   return Duplex.prototype.push.call(this, chunk, encoding);
 
- };
 
- // This is the part where you do stuff!
 
- // override this function in implementation classes.
 
- // 'chunk' is an input chunk.
 
- //
 
- // Call `push(newChunk)` to pass along transformed output
 
- // to the readable side.  You may call 'push' zero or more times.
 
- //
 
- // Call `cb(err)` when you are done with this chunk.  If you pass
 
- // an error, then that'll put the hurt on the whole operation.  If you
 
- // never call cb(), then you'll never get another chunk.
 
- Transform.prototype._transform = function (chunk, encoding, cb) {
 
-   throw new Error('_transform() is not implemented');
 
- };
 
- Transform.prototype._write = function (chunk, encoding, cb) {
 
-   var ts = this._transformState;
 
-   ts.writecb = cb;
 
-   ts.writechunk = chunk;
 
-   ts.writeencoding = encoding;
 
-   if (!ts.transforming) {
 
-     var rs = this._readableState;
 
-     if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
 
-   }
 
- };
 
- // Doesn't matter what the args are here.
 
- // _transform does all the work.
 
- // That we got here means that the readable side wants more data.
 
- Transform.prototype._read = function (n) {
 
-   var ts = this._transformState;
 
-   if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
 
-     ts.transforming = true;
 
-     this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
 
-   } else {
 
-     // mark that we need a transform, so that any data that comes in
 
-     // will get processed, now that we've asked for it.
 
-     ts.needTransform = true;
 
-   }
 
- };
 
- Transform.prototype._destroy = function (err, cb) {
 
-   var _this2 = this;
 
-   Duplex.prototype._destroy.call(this, err, function (err2) {
 
-     cb(err2);
 
-     _this2.emit('close');
 
-   });
 
- };
 
- function done(stream, er, data) {
 
-   if (er) return stream.emit('error', er);
 
-   if (data != null) // single equals check for both `null` and `undefined`
 
-     stream.push(data);
 
-   // if there's nothing in the write buffer, then that means
 
-   // that nothing more will ever be provided
 
-   if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');
 
-   if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');
 
-   return stream.push(null);
 
- }
 
- /***/ }),
 
- /* 21 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- var EventSource = __webpack_require__(22)
 
- if (typeof window === 'object') {
 
-   window.EventSourcePolyfill = EventSource
 
-   if (!window.EventSource) window.EventSource = EventSource
 
-   module.exports = window.EventSource
 
- } else {
 
-   module.exports = EventSource
 
- }
 
- /***/ }),
 
- /* 22 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- /* WEBPACK VAR INJECTION */(function(process, Buffer) {var parse = __webpack_require__(8).parse
 
- var events = __webpack_require__(9)
 
- var https = __webpack_require__(31)
 
- var http = __webpack_require__(11)
 
- var util = __webpack_require__(43)
 
- var httpsOptions = [
 
-   'pfx', 'key', 'passphrase', 'cert', 'ca', 'ciphers',
 
-   'rejectUnauthorized', 'secureProtocol', 'servername', 'checkServerIdentity'
 
- ]
 
- var bom = [239, 187, 191]
 
- var colon = 58
 
- var space = 32
 
- var lineFeed = 10
 
- var carriageReturn = 13
 
- // Beyond 256KB we could not observe any gain in performance
 
- var maxBufferAheadAllocation = 1024 * 256
 
- // Headers matching the pattern should be removed when redirecting to different origin
 
- var reUnsafeHeader = /^(cookie|authorization)$/i
 
- function hasBom (buf) {
 
-   return bom.every(function (charCode, index) {
 
-     return buf[index] === charCode
 
-   })
 
- }
 
- /**
 
-  * Creates a new EventSource object
 
-  *
 
-  * @param {String} url the URL to which to connect
 
-  * @param {Object} [eventSourceInitDict] extra init params. See README for details.
 
-  * @api public
 
-  **/
 
- function EventSource (url, eventSourceInitDict) {
 
-   var readyState = EventSource.CONNECTING
 
-   var headers = eventSourceInitDict && eventSourceInitDict.headers
 
-   var hasNewOrigin = false
 
-   Object.defineProperty(this, 'readyState', {
 
-     get: function () {
 
-       return readyState
 
-     }
 
-   })
 
-   Object.defineProperty(this, 'url', {
 
-     get: function () {
 
-       return url
 
-     }
 
-   })
 
-   var self = this
 
-   self.reconnectInterval = 1000
 
-   self.connectionInProgress = false
 
-   function onConnectionClosed (message) {
 
-     if (readyState === EventSource.CLOSED) return
 
-     readyState = EventSource.CONNECTING
 
-     _emit('error', new Event('error', {message: message}))
 
-     // The url may have been changed by a temporary redirect. If that's the case,
 
-     // revert it now, and flag that we are no longer pointing to a new origin
 
-     if (reconnectUrl) {
 
-       url = reconnectUrl
 
-       reconnectUrl = null
 
-       hasNewOrigin = false
 
-     }
 
-     setTimeout(function () {
 
-       if (readyState !== EventSource.CONNECTING || self.connectionInProgress) {
 
-         return
 
-       }
 
-       self.connectionInProgress = true
 
-       connect()
 
-     }, self.reconnectInterval)
 
-   }
 
-   var req
 
-   var lastEventId = ''
 
-   if (headers && headers['Last-Event-ID']) {
 
-     lastEventId = headers['Last-Event-ID']
 
-     delete headers['Last-Event-ID']
 
-   }
 
-   var discardTrailingNewline = false
 
-   var data = ''
 
-   var eventName = ''
 
-   var reconnectUrl = null
 
-   function connect () {
 
-     var options = parse(url)
 
-     var isSecure = options.protocol === 'https:'
 
-     options.headers = { 'Cache-Control': 'no-cache', 'Accept': 'text/event-stream' }
 
-     if (lastEventId) options.headers['Last-Event-ID'] = lastEventId
 
-     if (headers) {
 
-       var reqHeaders = hasNewOrigin ? removeUnsafeHeaders(headers) : headers
 
-       for (var i in reqHeaders) {
 
-         var header = reqHeaders[i]
 
-         if (header) {
 
-           options.headers[i] = header
 
-         }
 
-       }
 
-     }
 
-     // Legacy: this should be specified as `eventSourceInitDict.https.rejectUnauthorized`,
 
-     // but for now exists as a backwards-compatibility layer
 
-     options.rejectUnauthorized = !(eventSourceInitDict && !eventSourceInitDict.rejectUnauthorized)
 
-     if (eventSourceInitDict && eventSourceInitDict.createConnection !== undefined) {
 
-       options.createConnection = eventSourceInitDict.createConnection
 
-     }
 
-     // If specify http proxy, make the request to sent to the proxy server,
 
-     // and include the original url in path and Host headers
 
-     var useProxy = eventSourceInitDict && eventSourceInitDict.proxy
 
-     if (useProxy) {
 
-       var proxy = parse(eventSourceInitDict.proxy)
 
-       isSecure = proxy.protocol === 'https:'
 
-       options.protocol = isSecure ? 'https:' : 'http:'
 
-       options.path = url
 
-       options.headers.Host = options.host
 
-       options.hostname = proxy.hostname
 
-       options.host = proxy.host
 
-       options.port = proxy.port
 
-     }
 
-     // If https options are specified, merge them into the request options
 
-     if (eventSourceInitDict && eventSourceInitDict.https) {
 
-       for (var optName in eventSourceInitDict.https) {
 
-         if (httpsOptions.indexOf(optName) === -1) {
 
-           continue
 
-         }
 
-         var option = eventSourceInitDict.https[optName]
 
-         if (option !== undefined) {
 
-           options[optName] = option
 
-         }
 
-       }
 
-     }
 
-     // Pass this on to the XHR
 
-     if (eventSourceInitDict && eventSourceInitDict.withCredentials !== undefined) {
 
-       options.withCredentials = eventSourceInitDict.withCredentials
 
-     }
 
-     req = (isSecure ? https : http).request(options, function (res) {
 
-       self.connectionInProgress = false
 
-       // Handle HTTP errors
 
-       if (res.statusCode === 500 || res.statusCode === 502 || res.statusCode === 503 || res.statusCode === 504) {
 
-         _emit('error', new Event('error', {status: res.statusCode, message: res.statusMessage}))
 
-         onConnectionClosed()
 
-         return
 
-       }
 
-       // Handle HTTP redirects
 
-       if (res.statusCode === 301 || res.statusCode === 302 || res.statusCode === 307) {
 
-         var location = res.headers.location
 
-         if (!location) {
 
-           // Server sent redirect response without Location header.
 
-           _emit('error', new Event('error', {status: res.statusCode, message: res.statusMessage}))
 
-           return
 
-         }
 
-         var prevOrigin = new URL(url).origin
 
-         var nextOrigin = new URL(location).origin
 
-         hasNewOrigin = prevOrigin !== nextOrigin
 
-         if (res.statusCode === 307) reconnectUrl = url
 
-         url = location
 
-         process.nextTick(connect)
 
-         return
 
-       }
 
-       if (res.statusCode !== 200) {
 
-         _emit('error', new Event('error', {status: res.statusCode, message: res.statusMessage}))
 
-         return self.close()
 
-       }
 
-       readyState = EventSource.OPEN
 
-       res.on('close', function () {
 
-         res.removeAllListeners('close')
 
-         res.removeAllListeners('end')
 
-         onConnectionClosed()
 
-       })
 
-       res.on('end', function () {
 
-         res.removeAllListeners('close')
 
-         res.removeAllListeners('end')
 
-         onConnectionClosed()
 
-       })
 
-       _emit('open', new Event('open'))
 
-       // text/event-stream parser adapted from webkit's
 
-       // Source/WebCore/page/EventSource.cpp
 
-       var buf
 
-       var newBuffer
 
-       var startingPos = 0
 
-       var startingFieldLength = -1
 
-       var newBufferSize = 0
 
-       var bytesUsed = 0
 
-       res.on('data', function (chunk) {
 
-         if (!buf) {
 
-           buf = chunk
 
-           if (hasBom(buf)) {
 
-             buf = buf.slice(bom.length)
 
-           }
 
-           bytesUsed = buf.length
 
-         } else {
 
-           if (chunk.length > buf.length - bytesUsed) {
 
-             newBufferSize = (buf.length * 2) + chunk.length
 
-             if (newBufferSize > maxBufferAheadAllocation) {
 
-               newBufferSize = buf.length + chunk.length + maxBufferAheadAllocation
 
-             }
 
-             newBuffer = Buffer.alloc(newBufferSize)
 
-             buf.copy(newBuffer, 0, 0, bytesUsed)
 
-             buf = newBuffer
 
-           }
 
-           chunk.copy(buf, bytesUsed)
 
-           bytesUsed += chunk.length
 
-         }
 
-         var pos = 0
 
-         var length = bytesUsed
 
-         while (pos < length) {
 
-           if (discardTrailingNewline) {
 
-             if (buf[pos] === lineFeed) {
 
-               ++pos
 
-             }
 
-             discardTrailingNewline = false
 
-           }
 
-           var lineLength = -1
 
-           var fieldLength = startingFieldLength
 
-           var c
 
-           for (var i = startingPos; lineLength < 0 && i < length; ++i) {
 
-             c = buf[i]
 
-             if (c === colon) {
 
-               if (fieldLength < 0) {
 
-                 fieldLength = i - pos
 
-               }
 
-             } else if (c === carriageReturn) {
 
-               discardTrailingNewline = true
 
-               lineLength = i - pos
 
-             } else if (c === lineFeed) {
 
-               lineLength = i - pos
 
-             }
 
-           }
 
-           if (lineLength < 0) {
 
-             startingPos = length - pos
 
-             startingFieldLength = fieldLength
 
-             break
 
-           } else {
 
-             startingPos = 0
 
-             startingFieldLength = -1
 
-           }
 
-           parseEventStreamLine(buf, pos, fieldLength, lineLength)
 
-           pos += lineLength + 1
 
-         }
 
-         if (pos === length) {
 
-           buf = void 0
 
-           bytesUsed = 0
 
-         } else if (pos > 0) {
 
-           buf = buf.slice(pos, bytesUsed)
 
-           bytesUsed = buf.length
 
-         }
 
-       })
 
-     })
 
-     req.on('error', function (err) {
 
-       self.connectionInProgress = false
 
-       onConnectionClosed(err.message)
 
-     })
 
-     if (req.setNoDelay) req.setNoDelay(true)
 
-     req.end()
 
-   }
 
-   connect()
 
-   function _emit () {
 
-     if (self.listeners(arguments[0]).length > 0) {
 
-       self.emit.apply(self, arguments)
 
-     }
 
-   }
 
-   this._close = function () {
 
-     if (readyState === EventSource.CLOSED) return
 
-     readyState = EventSource.CLOSED
 
-     if (req.abort) req.abort()
 
-     if (req.xhr && req.xhr.abort) req.xhr.abort()
 
-   }
 
-   function parseEventStreamLine (buf, pos, fieldLength, lineLength) {
 
-     if (lineLength === 0) {
 
-       if (data.length > 0) {
 
-         var type = eventName || 'message'
 
-         _emit(type, new MessageEvent(type, {
 
-           data: data.slice(0, -1), // remove trailing newline
 
-           lastEventId: lastEventId,
 
-           origin: new URL(url).origin
 
-         }))
 
-         data = ''
 
-       }
 
-       eventName = void 0
 
-     } else if (fieldLength > 0) {
 
-       var noValue = fieldLength < 0
 
-       var step = 0
 
-       var field = buf.slice(pos, pos + (noValue ? lineLength : fieldLength)).toString()
 
-       if (noValue) {
 
-         step = lineLength
 
-       } else if (buf[pos + fieldLength + 1] !== space) {
 
-         step = fieldLength + 1
 
-       } else {
 
-         step = fieldLength + 2
 
-       }
 
-       pos += step
 
-       var valueLength = lineLength - step
 
-       var value = buf.slice(pos, pos + valueLength).toString()
 
-       if (field === 'data') {
 
-         data += value + '\n'
 
-       } else if (field === 'event') {
 
-         eventName = value
 
-       } else if (field === 'id') {
 
-         lastEventId = value
 
-       } else if (field === 'retry') {
 
-         var retry = parseInt(value, 10)
 
-         if (!Number.isNaN(retry)) {
 
-           self.reconnectInterval = retry
 
-         }
 
-       }
 
-     }
 
-   }
 
- }
 
- module.exports = EventSource
 
- util.inherits(EventSource, events.EventEmitter)
 
- EventSource.prototype.constructor = EventSource; // make stacktraces readable
 
- ['open', 'error', 'message'].forEach(function (method) {
 
-   Object.defineProperty(EventSource.prototype, 'on' + method, {
 
-     /**
 
-      * Returns the current listener
 
-      *
 
-      * @return {Mixed} the set function or undefined
 
-      * @api private
 
-      */
 
-     get: function get () {
 
-       var listener = this.listeners(method)[0]
 
-       return listener ? (listener._listener ? listener._listener : listener) : undefined
 
-     },
 
-     /**
 
-      * Start listening for events
 
-      *
 
-      * @param {Function} listener the listener
 
-      * @return {Mixed} the set function or undefined
 
-      * @api private
 
-      */
 
-     set: function set (listener) {
 
-       this.removeAllListeners(method)
 
-       this.addEventListener(method, listener)
 
-     }
 
-   })
 
- })
 
- /**
 
-  * Ready states
 
-  */
 
- Object.defineProperty(EventSource, 'CONNECTING', {enumerable: true, value: 0})
 
- Object.defineProperty(EventSource, 'OPEN', {enumerable: true, value: 1})
 
- Object.defineProperty(EventSource, 'CLOSED', {enumerable: true, value: 2})
 
- EventSource.prototype.CONNECTING = 0
 
- EventSource.prototype.OPEN = 1
 
- EventSource.prototype.CLOSED = 2
 
- /**
 
-  * Closes the connection, if one is made, and sets the readyState attribute to 2 (closed)
 
-  *
 
-  * @see https://developer.mozilla.org/en-US/docs/Web/API/EventSource/close
 
-  * @api public
 
-  */
 
- EventSource.prototype.close = function () {
 
-   this._close()
 
- }
 
- /**
 
-  * Emulates the W3C Browser based WebSocket interface using addEventListener.
 
-  *
 
-  * @param {String} type A string representing the event type to listen out for
 
-  * @param {Function} listener callback
 
-  * @see https://developer.mozilla.org/en/DOM/element.addEventListener
 
-  * @see http://dev.w3.org/html5/websockets/#the-websocket-interface
 
-  * @api public
 
-  */
 
- EventSource.prototype.addEventListener = function addEventListener (type, listener) {
 
-   if (typeof listener === 'function') {
 
-     // store a reference so we can return the original function again
 
-     listener._listener = listener
 
-     this.on(type, listener)
 
-   }
 
- }
 
- /**
 
-  * Emulates the W3C Browser based WebSocket interface using dispatchEvent.
 
-  *
 
-  * @param {Event} event An event to be dispatched
 
-  * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/dispatchEvent
 
-  * @api public
 
-  */
 
- EventSource.prototype.dispatchEvent = function dispatchEvent (event) {
 
-   if (!event.type) {
 
-     throw new Error('UNSPECIFIED_EVENT_TYPE_ERR')
 
-   }
 
-   // if event is instance of an CustomEvent (or has 'details' property),
 
-   // send the detail object as the payload for the event
 
-   this.emit(event.type, event.detail)
 
- }
 
- /**
 
-  * Emulates the W3C Browser based WebSocket interface using removeEventListener.
 
-  *
 
-  * @param {String} type A string representing the event type to remove
 
-  * @param {Function} listener callback
 
-  * @see https://developer.mozilla.org/en/DOM/element.removeEventListener
 
-  * @see http://dev.w3.org/html5/websockets/#the-websocket-interface
 
-  * @api public
 
-  */
 
- EventSource.prototype.removeEventListener = function removeEventListener (type, listener) {
 
-   if (typeof listener === 'function') {
 
-     listener._listener = undefined
 
-     this.removeListener(type, listener)
 
-   }
 
- }
 
- /**
 
-  * W3C Event
 
-  *
 
-  * @see http://www.w3.org/TR/DOM-Level-3-Events/#interface-Event
 
-  * @api private
 
-  */
 
- function Event (type, optionalProperties) {
 
-   Object.defineProperty(this, 'type', { writable: false, value: type, enumerable: true })
 
-   if (optionalProperties) {
 
-     for (var f in optionalProperties) {
 
-       if (optionalProperties.hasOwnProperty(f)) {
 
-         Object.defineProperty(this, f, { writable: false, value: optionalProperties[f], enumerable: true })
 
-       }
 
-     }
 
-   }
 
- }
 
- /**
 
-  * W3C MessageEvent
 
-  *
 
-  * @see http://www.w3.org/TR/webmessaging/#event-definitions
 
-  * @api private
 
-  */
 
- function MessageEvent (type, eventInitDict) {
 
-   Object.defineProperty(this, 'type', { writable: false, value: type, enumerable: true })
 
-   for (var f in eventInitDict) {
 
-     if (eventInitDict.hasOwnProperty(f)) {
 
-       Object.defineProperty(this, f, { writable: false, value: eventInitDict[f], enumerable: true })
 
-     }
 
-   }
 
- }
 
- /**
 
-  * Returns a new object of headers that does not include any authorization and cookie headers
 
-  *
 
-  * @param {Object} headers An object of headers ({[headerName]: headerValue})
 
-  * @return {Object} a new object of headers
 
-  * @api private
 
-  */
 
- function removeUnsafeHeaders (headers) {
 
-   var safe = {}
 
-   for (var key in headers) {
 
-     if (reUnsafeHeader.test(key)) {
 
-       continue
 
-     }
 
-     safe[key] = headers[key]
 
-   }
 
-   return safe
 
- }
 
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1), __webpack_require__(3).Buffer))
 
- /***/ }),
 
- /* 23 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- "use strict";
 
- exports.byteLength = byteLength
 
- exports.toByteArray = toByteArray
 
- exports.fromByteArray = fromByteArray
 
- var lookup = []
 
- var revLookup = []
 
- var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
 
- var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
 
- for (var i = 0, len = code.length; i < len; ++i) {
 
-   lookup[i] = code[i]
 
-   revLookup[code.charCodeAt(i)] = i
 
- }
 
- // Support decoding URL-safe base64 strings, as Node.js does.
 
- // See: https://en.wikipedia.org/wiki/Base64#URL_applications
 
- revLookup['-'.charCodeAt(0)] = 62
 
- revLookup['_'.charCodeAt(0)] = 63
 
- function getLens (b64) {
 
-   var len = b64.length
 
-   if (len % 4 > 0) {
 
-     throw new Error('Invalid string. Length must be a multiple of 4')
 
-   }
 
-   // Trim off extra bytes after placeholder bytes are found
 
-   // See: https://github.com/beatgammit/base64-js/issues/42
 
-   var validLen = b64.indexOf('=')
 
-   if (validLen === -1) validLen = len
 
-   var placeHoldersLen = validLen === len
 
-     ? 0
 
-     : 4 - (validLen % 4)
 
-   return [validLen, placeHoldersLen]
 
- }
 
- // base64 is 4/3 + up to two characters of the original data
 
- function byteLength (b64) {
 
-   var lens = getLens(b64)
 
-   var validLen = lens[0]
 
-   var placeHoldersLen = lens[1]
 
-   return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
 
- }
 
- function _byteLength (b64, validLen, placeHoldersLen) {
 
-   return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
 
- }
 
- function toByteArray (b64) {
 
-   var tmp
 
-   var lens = getLens(b64)
 
-   var validLen = lens[0]
 
-   var placeHoldersLen = lens[1]
 
-   var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))
 
-   var curByte = 0
 
-   // if there are placeholders, only get up to the last complete 4 chars
 
-   var len = placeHoldersLen > 0
 
-     ? validLen - 4
 
-     : validLen
 
-   var i
 
-   for (i = 0; i < len; i += 4) {
 
-     tmp =
 
-       (revLookup[b64.charCodeAt(i)] << 18) |
 
-       (revLookup[b64.charCodeAt(i + 1)] << 12) |
 
-       (revLookup[b64.charCodeAt(i + 2)] << 6) |
 
-       revLookup[b64.charCodeAt(i + 3)]
 
-     arr[curByte++] = (tmp >> 16) & 0xFF
 
-     arr[curByte++] = (tmp >> 8) & 0xFF
 
-     arr[curByte++] = tmp & 0xFF
 
-   }
 
-   if (placeHoldersLen === 2) {
 
-     tmp =
 
-       (revLookup[b64.charCodeAt(i)] << 2) |
 
-       (revLookup[b64.charCodeAt(i + 1)] >> 4)
 
-     arr[curByte++] = tmp & 0xFF
 
-   }
 
-   if (placeHoldersLen === 1) {
 
-     tmp =
 
-       (revLookup[b64.charCodeAt(i)] << 10) |
 
-       (revLookup[b64.charCodeAt(i + 1)] << 4) |
 
-       (revLookup[b64.charCodeAt(i + 2)] >> 2)
 
-     arr[curByte++] = (tmp >> 8) & 0xFF
 
-     arr[curByte++] = tmp & 0xFF
 
-   }
 
-   return arr
 
- }
 
- function tripletToBase64 (num) {
 
-   return lookup[num >> 18 & 0x3F] +
 
-     lookup[num >> 12 & 0x3F] +
 
-     lookup[num >> 6 & 0x3F] +
 
-     lookup[num & 0x3F]
 
- }
 
- function encodeChunk (uint8, start, end) {
 
-   var tmp
 
-   var output = []
 
-   for (var i = start; i < end; i += 3) {
 
-     tmp =
 
-       ((uint8[i] << 16) & 0xFF0000) +
 
-       ((uint8[i + 1] << 8) & 0xFF00) +
 
-       (uint8[i + 2] & 0xFF)
 
-     output.push(tripletToBase64(tmp))
 
-   }
 
-   return output.join('')
 
- }
 
- function fromByteArray (uint8) {
 
-   var tmp
 
-   var len = uint8.length
 
-   var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
 
-   var parts = []
 
-   var maxChunkLength = 16383 // must be multiple of 3
 
-   // go through the array every three bytes, we'll deal with trailing stuff later
 
-   for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
 
-     parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
 
-   }
 
-   // pad the end with zeros, but make sure to not forget the extra bytes
 
-   if (extraBytes === 1) {
 
-     tmp = uint8[len - 1]
 
-     parts.push(
 
-       lookup[tmp >> 2] +
 
-       lookup[(tmp << 4) & 0x3F] +
 
-       '=='
 
-     )
 
-   } else if (extraBytes === 2) {
 
-     tmp = (uint8[len - 2] << 8) + uint8[len - 1]
 
-     parts.push(
 
-       lookup[tmp >> 10] +
 
-       lookup[(tmp >> 4) & 0x3F] +
 
-       lookup[(tmp << 2) & 0x3F] +
 
-       '='
 
-     )
 
-   }
 
-   return parts.join('')
 
- }
 
- /***/ }),
 
- /* 24 */
 
- /***/ (function(module, exports) {
 
- /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
 
- exports.read = function (buffer, offset, isLE, mLen, nBytes) {
 
-   var e, m
 
-   var eLen = (nBytes * 8) - mLen - 1
 
-   var eMax = (1 << eLen) - 1
 
-   var eBias = eMax >> 1
 
-   var nBits = -7
 
-   var i = isLE ? (nBytes - 1) : 0
 
-   var d = isLE ? -1 : 1
 
-   var s = buffer[offset + i]
 
-   i += d
 
-   e = s & ((1 << (-nBits)) - 1)
 
-   s >>= (-nBits)
 
-   nBits += eLen
 
-   for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}
 
-   m = e & ((1 << (-nBits)) - 1)
 
-   e >>= (-nBits)
 
-   nBits += mLen
 
-   for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}
 
-   if (e === 0) {
 
-     e = 1 - eBias
 
-   } else if (e === eMax) {
 
-     return m ? NaN : ((s ? -1 : 1) * Infinity)
 
-   } else {
 
-     m = m + Math.pow(2, mLen)
 
-     e = e - eBias
 
-   }
 
-   return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
 
- }
 
- exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
 
-   var e, m, c
 
-   var eLen = (nBytes * 8) - mLen - 1
 
-   var eMax = (1 << eLen) - 1
 
-   var eBias = eMax >> 1
 
-   var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
 
-   var i = isLE ? 0 : (nBytes - 1)
 
-   var d = isLE ? 1 : -1
 
-   var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
 
-   value = Math.abs(value)
 
-   if (isNaN(value) || value === Infinity) {
 
-     m = isNaN(value) ? 1 : 0
 
-     e = eMax
 
-   } else {
 
-     e = Math.floor(Math.log(value) / Math.LN2)
 
-     if (value * (c = Math.pow(2, -e)) < 1) {
 
-       e--
 
-       c *= 2
 
-     }
 
-     if (e + eBias >= 1) {
 
-       value += rt / c
 
-     } else {
 
-       value += rt * Math.pow(2, 1 - eBias)
 
-     }
 
-     if (value * c >= 2) {
 
-       e++
 
-       c /= 2
 
-     }
 
-     if (e + eBias >= eMax) {
 
-       m = 0
 
-       e = eMax
 
-     } else if (e + eBias >= 1) {
 
-       m = ((value * c) - 1) * Math.pow(2, mLen)
 
-       e = e + eBias
 
-     } else {
 
-       m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
 
-       e = 0
 
-     }
 
-   }
 
-   for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
 
-   e = (e << mLen) | m
 
-   eLen += mLen
 
-   for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
 
-   buffer[offset + i - d] |= s * 128
 
- }
 
- /***/ }),
 
- /* 25 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- /* WEBPACK VAR INJECTION */(function(module, global) {var __WEBPACK_AMD_DEFINE_RESULT__;/*! https://mths.be/punycode v1.4.1 by @mathias */
 
- ;(function(root) {
 
- 	/** Detect free variables */
 
- 	var freeExports = typeof exports == 'object' && exports &&
 
- 		!exports.nodeType && exports;
 
- 	var freeModule = typeof module == 'object' && module &&
 
- 		!module.nodeType && module;
 
- 	var freeGlobal = typeof global == 'object' && global;
 
- 	if (
 
- 		freeGlobal.global === freeGlobal ||
 
- 		freeGlobal.window === freeGlobal ||
 
- 		freeGlobal.self === freeGlobal
 
- 	) {
 
- 		root = freeGlobal;
 
- 	}
 
- 	/**
 
- 	 * The `punycode` object.
 
- 	 * @name punycode
 
- 	 * @type Object
 
- 	 */
 
- 	var punycode,
 
- 	/** Highest positive signed 32-bit float value */
 
- 	maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1
 
- 	/** Bootstring parameters */
 
- 	base = 36,
 
- 	tMin = 1,
 
- 	tMax = 26,
 
- 	skew = 38,
 
- 	damp = 700,
 
- 	initialBias = 72,
 
- 	initialN = 128, // 0x80
 
- 	delimiter = '-', // '\x2D'
 
- 	/** Regular expressions */
 
- 	regexPunycode = /^xn--/,
 
- 	regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars
 
- 	regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators
 
- 	/** Error messages */
 
- 	errors = {
 
- 		'overflow': 'Overflow: input needs wider integers to process',
 
- 		'not-basic': 'Illegal input >= 0x80 (not a basic code point)',
 
- 		'invalid-input': 'Invalid input'
 
- 	},
 
- 	/** Convenience shortcuts */
 
- 	baseMinusTMin = base - tMin,
 
- 	floor = Math.floor,
 
- 	stringFromCharCode = String.fromCharCode,
 
- 	/** Temporary variable */
 
- 	key;
 
- 	/*--------------------------------------------------------------------------*/
 
- 	/**
 
- 	 * A generic error utility function.
 
- 	 * @private
 
- 	 * @param {String} type The error type.
 
- 	 * @returns {Error} Throws a `RangeError` with the applicable error message.
 
- 	 */
 
- 	function error(type) {
 
- 		throw new RangeError(errors[type]);
 
- 	}
 
- 	/**
 
- 	 * A generic `Array#map` utility function.
 
- 	 * @private
 
- 	 * @param {Array} array The array to iterate over.
 
- 	 * @param {Function} callback The function that gets called for every array
 
- 	 * item.
 
- 	 * @returns {Array} A new array of values returned by the callback function.
 
- 	 */
 
- 	function map(array, fn) {
 
- 		var length = array.length;
 
- 		var result = [];
 
- 		while (length--) {
 
- 			result[length] = fn(array[length]);
 
- 		}
 
- 		return result;
 
- 	}
 
- 	/**
 
- 	 * A simple `Array#map`-like wrapper to work with domain name strings or email
 
- 	 * addresses.
 
- 	 * @private
 
- 	 * @param {String} domain The domain name or email address.
 
- 	 * @param {Function} callback The function that gets called for every
 
- 	 * character.
 
- 	 * @returns {Array} A new string of characters returned by the callback
 
- 	 * function.
 
- 	 */
 
- 	function mapDomain(string, fn) {
 
- 		var parts = string.split('@');
 
- 		var result = '';
 
- 		if (parts.length > 1) {
 
- 			// In email addresses, only the domain name should be punycoded. Leave
 
- 			// the local part (i.e. everything up to `@`) intact.
 
- 			result = parts[0] + '@';
 
- 			string = parts[1];
 
- 		}
 
- 		// Avoid `split(regex)` for IE8 compatibility. See #17.
 
- 		string = string.replace(regexSeparators, '\x2E');
 
- 		var labels = string.split('.');
 
- 		var encoded = map(labels, fn).join('.');
 
- 		return result + encoded;
 
- 	}
 
- 	/**
 
- 	 * Creates an array containing the numeric code points of each Unicode
 
- 	 * character in the string. While JavaScript uses UCS-2 internally,
 
- 	 * this function will convert a pair of surrogate halves (each of which
 
- 	 * UCS-2 exposes as separate characters) into a single code point,
 
- 	 * matching UTF-16.
 
- 	 * @see `punycode.ucs2.encode`
 
- 	 * @see <https://mathiasbynens.be/notes/javascript-encoding>
 
- 	 * @memberOf punycode.ucs2
 
- 	 * @name decode
 
- 	 * @param {String} string The Unicode input string (UCS-2).
 
- 	 * @returns {Array} The new array of code points.
 
- 	 */
 
- 	function ucs2decode(string) {
 
- 		var output = [],
 
- 		    counter = 0,
 
- 		    length = string.length,
 
- 		    value,
 
- 		    extra;
 
- 		while (counter < length) {
 
- 			value = string.charCodeAt(counter++);
 
- 			if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
 
- 				// high surrogate, and there is a next character
 
- 				extra = string.charCodeAt(counter++);
 
- 				if ((extra & 0xFC00) == 0xDC00) { // low surrogate
 
- 					output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
 
- 				} else {
 
- 					// unmatched surrogate; only append this code unit, in case the next
 
- 					// code unit is the high surrogate of a surrogate pair
 
- 					output.push(value);
 
- 					counter--;
 
- 				}
 
- 			} else {
 
- 				output.push(value);
 
- 			}
 
- 		}
 
- 		return output;
 
- 	}
 
- 	/**
 
- 	 * Creates a string based on an array of numeric code points.
 
- 	 * @see `punycode.ucs2.decode`
 
- 	 * @memberOf punycode.ucs2
 
- 	 * @name encode
 
- 	 * @param {Array} codePoints The array of numeric code points.
 
- 	 * @returns {String} The new Unicode string (UCS-2).
 
- 	 */
 
- 	function ucs2encode(array) {
 
- 		return map(array, function(value) {
 
- 			var output = '';
 
- 			if (value > 0xFFFF) {
 
- 				value -= 0x10000;
 
- 				output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);
 
- 				value = 0xDC00 | value & 0x3FF;
 
- 			}
 
- 			output += stringFromCharCode(value);
 
- 			return output;
 
- 		}).join('');
 
- 	}
 
- 	/**
 
- 	 * Converts a basic code point into a digit/integer.
 
- 	 * @see `digitToBasic()`
 
- 	 * @private
 
- 	 * @param {Number} codePoint The basic numeric code point value.
 
- 	 * @returns {Number} The numeric value of a basic code point (for use in
 
- 	 * representing integers) in the range `0` to `base - 1`, or `base` if
 
- 	 * the code point does not represent a value.
 
- 	 */
 
- 	function basicToDigit(codePoint) {
 
- 		if (codePoint - 48 < 10) {
 
- 			return codePoint - 22;
 
- 		}
 
- 		if (codePoint - 65 < 26) {
 
- 			return codePoint - 65;
 
- 		}
 
- 		if (codePoint - 97 < 26) {
 
- 			return codePoint - 97;
 
- 		}
 
- 		return base;
 
- 	}
 
- 	/**
 
- 	 * Converts a digit/integer into a basic code point.
 
- 	 * @see `basicToDigit()`
 
- 	 * @private
 
- 	 * @param {Number} digit The numeric value of a basic code point.
 
- 	 * @returns {Number} The basic code point whose value (when used for
 
- 	 * representing integers) is `digit`, which needs to be in the range
 
- 	 * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is
 
- 	 * used; else, the lowercase form is used. The behavior is undefined
 
- 	 * if `flag` is non-zero and `digit` has no uppercase form.
 
- 	 */
 
- 	function digitToBasic(digit, flag) {
 
- 		//  0..25 map to ASCII a..z or A..Z
 
- 		// 26..35 map to ASCII 0..9
 
- 		return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);
 
- 	}
 
- 	/**
 
- 	 * Bias adaptation function as per section 3.4 of RFC 3492.
 
- 	 * https://tools.ietf.org/html/rfc3492#section-3.4
 
- 	 * @private
 
- 	 */
 
- 	function adapt(delta, numPoints, firstTime) {
 
- 		var k = 0;
 
- 		delta = firstTime ? floor(delta / damp) : delta >> 1;
 
- 		delta += floor(delta / numPoints);
 
- 		for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {
 
- 			delta = floor(delta / baseMinusTMin);
 
- 		}
 
- 		return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
 
- 	}
 
- 	/**
 
- 	 * Converts a Punycode string of ASCII-only symbols to a string of Unicode
 
- 	 * symbols.
 
- 	 * @memberOf punycode
 
- 	 * @param {String} input The Punycode string of ASCII-only symbols.
 
- 	 * @returns {String} The resulting string of Unicode symbols.
 
- 	 */
 
- 	function decode(input) {
 
- 		// Don't use UCS-2
 
- 		var output = [],
 
- 		    inputLength = input.length,
 
- 		    out,
 
- 		    i = 0,
 
- 		    n = initialN,
 
- 		    bias = initialBias,
 
- 		    basic,
 
- 		    j,
 
- 		    index,
 
- 		    oldi,
 
- 		    w,
 
- 		    k,
 
- 		    digit,
 
- 		    t,
 
- 		    /** Cached calculation results */
 
- 		    baseMinusT;
 
- 		// Handle the basic code points: let `basic` be the number of input code
 
- 		// points before the last delimiter, or `0` if there is none, then copy
 
- 		// the first basic code points to the output.
 
- 		basic = input.lastIndexOf(delimiter);
 
- 		if (basic < 0) {
 
- 			basic = 0;
 
- 		}
 
- 		for (j = 0; j < basic; ++j) {
 
- 			// if it's not a basic code point
 
- 			if (input.charCodeAt(j) >= 0x80) {
 
- 				error('not-basic');
 
- 			}
 
- 			output.push(input.charCodeAt(j));
 
- 		}
 
- 		// Main decoding loop: start just after the last delimiter if any basic code
 
- 		// points were copied; start at the beginning otherwise.
 
- 		for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {
 
- 			// `index` is the index of the next character to be consumed.
 
- 			// Decode a generalized variable-length integer into `delta`,
 
- 			// which gets added to `i`. The overflow checking is easier
 
- 			// if we increase `i` as we go, then subtract off its starting
 
- 			// value at the end to obtain `delta`.
 
- 			for (oldi = i, w = 1, k = base; /* no condition */; k += base) {
 
- 				if (index >= inputLength) {
 
- 					error('invalid-input');
 
- 				}
 
- 				digit = basicToDigit(input.charCodeAt(index++));
 
- 				if (digit >= base || digit > floor((maxInt - i) / w)) {
 
- 					error('overflow');
 
- 				}
 
- 				i += digit * w;
 
- 				t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
 
- 				if (digit < t) {
 
- 					break;
 
- 				}
 
- 				baseMinusT = base - t;
 
- 				if (w > floor(maxInt / baseMinusT)) {
 
- 					error('overflow');
 
- 				}
 
- 				w *= baseMinusT;
 
- 			}
 
- 			out = output.length + 1;
 
- 			bias = adapt(i - oldi, out, oldi == 0);
 
- 			// `i` was supposed to wrap around from `out` to `0`,
 
- 			// incrementing `n` each time, so we'll fix that now:
 
- 			if (floor(i / out) > maxInt - n) {
 
- 				error('overflow');
 
- 			}
 
- 			n += floor(i / out);
 
- 			i %= out;
 
- 			// Insert `n` at position `i` of the output
 
- 			output.splice(i++, 0, n);
 
- 		}
 
- 		return ucs2encode(output);
 
- 	}
 
- 	/**
 
- 	 * Converts a string of Unicode symbols (e.g. a domain name label) to a
 
- 	 * Punycode string of ASCII-only symbols.
 
- 	 * @memberOf punycode
 
- 	 * @param {String} input The string of Unicode symbols.
 
- 	 * @returns {String} The resulting Punycode string of ASCII-only symbols.
 
- 	 */
 
- 	function encode(input) {
 
- 		var n,
 
- 		    delta,
 
- 		    handledCPCount,
 
- 		    basicLength,
 
- 		    bias,
 
- 		    j,
 
- 		    m,
 
- 		    q,
 
- 		    k,
 
- 		    t,
 
- 		    currentValue,
 
- 		    output = [],
 
- 		    /** `inputLength` will hold the number of code points in `input`. */
 
- 		    inputLength,
 
- 		    /** Cached calculation results */
 
- 		    handledCPCountPlusOne,
 
- 		    baseMinusT,
 
- 		    qMinusT;
 
- 		// Convert the input in UCS-2 to Unicode
 
- 		input = ucs2decode(input);
 
- 		// Cache the length
 
- 		inputLength = input.length;
 
- 		// Initialize the state
 
- 		n = initialN;
 
- 		delta = 0;
 
- 		bias = initialBias;
 
- 		// Handle the basic code points
 
- 		for (j = 0; j < inputLength; ++j) {
 
- 			currentValue = input[j];
 
- 			if (currentValue < 0x80) {
 
- 				output.push(stringFromCharCode(currentValue));
 
- 			}
 
- 		}
 
- 		handledCPCount = basicLength = output.length;
 
- 		// `handledCPCount` is the number of code points that have been handled;
 
- 		// `basicLength` is the number of basic code points.
 
- 		// Finish the basic string - if it is not empty - with a delimiter
 
- 		if (basicLength) {
 
- 			output.push(delimiter);
 
- 		}
 
- 		// Main encoding loop:
 
- 		while (handledCPCount < inputLength) {
 
- 			// All non-basic code points < n have been handled already. Find the next
 
- 			// larger one:
 
- 			for (m = maxInt, j = 0; j < inputLength; ++j) {
 
- 				currentValue = input[j];
 
- 				if (currentValue >= n && currentValue < m) {
 
- 					m = currentValue;
 
- 				}
 
- 			}
 
- 			// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,
 
- 			// but guard against overflow
 
- 			handledCPCountPlusOne = handledCPCount + 1;
 
- 			if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {
 
- 				error('overflow');
 
- 			}
 
- 			delta += (m - n) * handledCPCountPlusOne;
 
- 			n = m;
 
- 			for (j = 0; j < inputLength; ++j) {
 
- 				currentValue = input[j];
 
- 				if (currentValue < n && ++delta > maxInt) {
 
- 					error('overflow');
 
- 				}
 
- 				if (currentValue == n) {
 
- 					// Represent delta as a generalized variable-length integer
 
- 					for (q = delta, k = base; /* no condition */; k += base) {
 
- 						t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
 
- 						if (q < t) {
 
- 							break;
 
- 						}
 
- 						qMinusT = q - t;
 
- 						baseMinusT = base - t;
 
- 						output.push(
 
- 							stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))
 
- 						);
 
- 						q = floor(qMinusT / baseMinusT);
 
- 					}
 
- 					output.push(stringFromCharCode(digitToBasic(q, 0)));
 
- 					bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);
 
- 					delta = 0;
 
- 					++handledCPCount;
 
- 				}
 
- 			}
 
- 			++delta;
 
- 			++n;
 
- 		}
 
- 		return output.join('');
 
- 	}
 
- 	/**
 
- 	 * Converts a Punycode string representing a domain name or an email address
 
- 	 * to Unicode. Only the Punycoded parts of the input will be converted, i.e.
 
- 	 * it doesn't matter if you call it on a string that has already been
 
- 	 * converted to Unicode.
 
- 	 * @memberOf punycode
 
- 	 * @param {String} input The Punycoded domain name or email address to
 
- 	 * convert to Unicode.
 
- 	 * @returns {String} The Unicode representation of the given Punycode
 
- 	 * string.
 
- 	 */
 
- 	function toUnicode(input) {
 
- 		return mapDomain(input, function(string) {
 
- 			return regexPunycode.test(string)
 
- 				? decode(string.slice(4).toLowerCase())
 
- 				: string;
 
- 		});
 
- 	}
 
- 	/**
 
- 	 * Converts a Unicode string representing a domain name or an email address to
 
- 	 * Punycode. Only the non-ASCII parts of the domain name will be converted,
 
- 	 * i.e. it doesn't matter if you call it with a domain that's already in
 
- 	 * ASCII.
 
- 	 * @memberOf punycode
 
- 	 * @param {String} input The domain name or email address to convert, as a
 
- 	 * Unicode string.
 
- 	 * @returns {String} The Punycode representation of the given domain name or
 
- 	 * email address.
 
- 	 */
 
- 	function toASCII(input) {
 
- 		return mapDomain(input, function(string) {
 
- 			return regexNonASCII.test(string)
 
- 				? 'xn--' + encode(string)
 
- 				: string;
 
- 		});
 
- 	}
 
- 	/*--------------------------------------------------------------------------*/
 
- 	/** Define the public API */
 
- 	punycode = {
 
- 		/**
 
- 		 * A string representing the current Punycode.js version number.
 
- 		 * @memberOf punycode
 
- 		 * @type String
 
- 		 */
 
- 		'version': '1.4.1',
 
- 		/**
 
- 		 * An object of methods to convert from JavaScript's internal character
 
- 		 * representation (UCS-2) to Unicode code points, and back.
 
- 		 * @see <https://mathiasbynens.be/notes/javascript-encoding>
 
- 		 * @memberOf punycode
 
- 		 * @type Object
 
- 		 */
 
- 		'ucs2': {
 
- 			'decode': ucs2decode,
 
- 			'encode': ucs2encode
 
- 		},
 
- 		'decode': decode,
 
- 		'encode': encode,
 
- 		'toASCII': toASCII,
 
- 		'toUnicode': toUnicode
 
- 	};
 
- 	/** Expose `punycode` */
 
- 	// Some AMD build optimizers, like r.js, check for specific condition patterns
 
- 	// like the following:
 
- 	if (
 
- 		true
 
- 	) {
 
- 		!(__WEBPACK_AMD_DEFINE_RESULT__ = (function() {
 
- 			return punycode;
 
- 		}).call(exports, __webpack_require__, exports, module),
 
- 				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
 
- 	} else if (freeExports && freeModule) {
 
- 		if (module.exports == freeExports) {
 
- 			// in Node.js, io.js, or RingoJS v0.8.0+
 
- 			freeModule.exports = punycode;
 
- 		} else {
 
- 			// in Narwhal or RingoJS v0.7.0-
 
- 			for (key in punycode) {
 
- 				punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);
 
- 			}
 
- 		}
 
- 	} else {
 
- 		// in Rhino or a web browser
 
- 		root.punycode = punycode;
 
- 	}
 
- }(this));
 
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(26)(module), __webpack_require__(0)))
 
- /***/ }),
 
- /* 26 */
 
- /***/ (function(module, exports) {
 
- module.exports = function(module) {
 
- 	if(!module.webpackPolyfill) {
 
- 		module.deprecate = function() {};
 
- 		module.paths = [];
 
- 		// module.parent = undefined by default
 
- 		if(!module.children) module.children = [];
 
- 		Object.defineProperty(module, "loaded", {
 
- 			enumerable: true,
 
- 			get: function() {
 
- 				return module.l;
 
- 			}
 
- 		});
 
- 		Object.defineProperty(module, "id", {
 
- 			enumerable: true,
 
- 			get: function() {
 
- 				return module.i;
 
- 			}
 
- 		});
 
- 		module.webpackPolyfill = 1;
 
- 	}
 
- 	return module;
 
- };
 
- /***/ }),
 
- /* 27 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- "use strict";
 
- module.exports = {
 
-   isString: function(arg) {
 
-     return typeof(arg) === 'string';
 
-   },
 
-   isObject: function(arg) {
 
-     return typeof(arg) === 'object' && arg !== null;
 
-   },
 
-   isNull: function(arg) {
 
-     return arg === null;
 
-   },
 
-   isNullOrUndefined: function(arg) {
 
-     return arg == null;
 
-   }
 
- };
 
- /***/ }),
 
- /* 28 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- "use strict";
 
- exports.decode = exports.parse = __webpack_require__(29);
 
- exports.encode = exports.stringify = __webpack_require__(30);
 
- /***/ }),
 
- /* 29 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- "use strict";
 
- // Copyright Joyent, Inc. and other Node contributors.
 
- //
 
- // Permission is hereby granted, free of charge, to any person obtaining a
 
- // copy of this software and associated documentation files (the
 
- // "Software"), to deal in the Software without restriction, including
 
- // without limitation the rights to use, copy, modify, merge, publish,
 
- // distribute, sublicense, and/or sell copies of the Software, and to permit
 
- // persons to whom the Software is furnished to do so, subject to the
 
- // following conditions:
 
- //
 
- // The above copyright notice and this permission notice shall be included
 
- // in all copies or substantial portions of the Software.
 
- //
 
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
 
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
 
- // If obj.hasOwnProperty has been overridden, then calling
 
- // obj.hasOwnProperty(prop) will break.
 
- // See: https://github.com/joyent/node/issues/1707
 
- function hasOwnProperty(obj, prop) {
 
-   return Object.prototype.hasOwnProperty.call(obj, prop);
 
- }
 
- module.exports = function(qs, sep, eq, options) {
 
-   sep = sep || '&';
 
-   eq = eq || '=';
 
-   var obj = {};
 
-   if (typeof qs !== 'string' || qs.length === 0) {
 
-     return obj;
 
-   }
 
-   var regexp = /\+/g;
 
-   qs = qs.split(sep);
 
-   var maxKeys = 1000;
 
-   if (options && typeof options.maxKeys === 'number') {
 
-     maxKeys = options.maxKeys;
 
-   }
 
-   var len = qs.length;
 
-   // maxKeys <= 0 means that we should not limit keys count
 
-   if (maxKeys > 0 && len > maxKeys) {
 
-     len = maxKeys;
 
-   }
 
-   for (var i = 0; i < len; ++i) {
 
-     var x = qs[i].replace(regexp, '%20'),
 
-         idx = x.indexOf(eq),
 
-         kstr, vstr, k, v;
 
-     if (idx >= 0) {
 
-       kstr = x.substr(0, idx);
 
-       vstr = x.substr(idx + 1);
 
-     } else {
 
-       kstr = x;
 
-       vstr = '';
 
-     }
 
-     k = decodeURIComponent(kstr);
 
-     v = decodeURIComponent(vstr);
 
-     if (!hasOwnProperty(obj, k)) {
 
-       obj[k] = v;
 
-     } else if (isArray(obj[k])) {
 
-       obj[k].push(v);
 
-     } else {
 
-       obj[k] = [obj[k], v];
 
-     }
 
-   }
 
-   return obj;
 
- };
 
- var isArray = Array.isArray || function (xs) {
 
-   return Object.prototype.toString.call(xs) === '[object Array]';
 
- };
 
- /***/ }),
 
- /* 30 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- "use strict";
 
- // Copyright Joyent, Inc. and other Node contributors.
 
- //
 
- // Permission is hereby granted, free of charge, to any person obtaining a
 
- // copy of this software and associated documentation files (the
 
- // "Software"), to deal in the Software without restriction, including
 
- // without limitation the rights to use, copy, modify, merge, publish,
 
- // distribute, sublicense, and/or sell copies of the Software, and to permit
 
- // persons to whom the Software is furnished to do so, subject to the
 
- // following conditions:
 
- //
 
- // The above copyright notice and this permission notice shall be included
 
- // in all copies or substantial portions of the Software.
 
- //
 
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
 
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
 
- var stringifyPrimitive = function(v) {
 
-   switch (typeof v) {
 
-     case 'string':
 
-       return v;
 
-     case 'boolean':
 
-       return v ? 'true' : 'false';
 
-     case 'number':
 
-       return isFinite(v) ? v : '';
 
-     default:
 
-       return '';
 
-   }
 
- };
 
- module.exports = function(obj, sep, eq, name) {
 
-   sep = sep || '&';
 
-   eq = eq || '=';
 
-   if (obj === null) {
 
-     obj = undefined;
 
-   }
 
-   if (typeof obj === 'object') {
 
-     return map(objectKeys(obj), function(k) {
 
-       var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
 
-       if (isArray(obj[k])) {
 
-         return map(obj[k], function(v) {
 
-           return ks + encodeURIComponent(stringifyPrimitive(v));
 
-         }).join(sep);
 
-       } else {
 
-         return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
 
-       }
 
-     }).join(sep);
 
-   }
 
-   if (!name) return '';
 
-   return encodeURIComponent(stringifyPrimitive(name)) + eq +
 
-          encodeURIComponent(stringifyPrimitive(obj));
 
- };
 
- var isArray = Array.isArray || function (xs) {
 
-   return Object.prototype.toString.call(xs) === '[object Array]';
 
- };
 
- function map (xs, f) {
 
-   if (xs.map) return xs.map(f);
 
-   var res = [];
 
-   for (var i = 0; i < xs.length; i++) {
 
-     res.push(f(xs[i], i));
 
-   }
 
-   return res;
 
- }
 
- var objectKeys = Object.keys || function (obj) {
 
-   var res = [];
 
-   for (var key in obj) {
 
-     if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);
 
-   }
 
-   return res;
 
- };
 
- /***/ }),
 
- /* 31 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- var http = __webpack_require__(11)
 
- var url = __webpack_require__(8)
 
- var https = module.exports
 
- for (var key in http) {
 
-   if (http.hasOwnProperty(key)) https[key] = http[key]
 
- }
 
- https.request = function (params, cb) {
 
-   params = validateParams(params)
 
-   return http.request.call(this, params, cb)
 
- }
 
- https.get = function (params, cb) {
 
-   params = validateParams(params)
 
-   return http.get.call(this, params, cb)
 
- }
 
- function validateParams (params) {
 
-   if (typeof params === 'string') {
 
-     params = url.parse(params)
 
-   }
 
-   if (!params.protocol) {
 
-     params.protocol = 'https:'
 
-   }
 
-   if (params.protocol !== 'https:') {
 
-     throw new Error('Protocol "' + params.protocol + '" not supported. Expected "https:"')
 
-   }
 
-   return params
 
- }
 
- /***/ }),
 
- /* 32 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- /* WEBPACK VAR INJECTION */(function(Buffer, global, process) {var capability = __webpack_require__(12)
 
- var inherits = __webpack_require__(2)
 
- var response = __webpack_require__(13)
 
- var stream = __webpack_require__(14)
 
- var toArrayBuffer = __webpack_require__(40)
 
- var IncomingMessage = response.IncomingMessage
 
- var rStates = response.readyStates
 
- function decideMode (preferBinary, useFetch) {
 
- 	if (capability.fetch && useFetch) {
 
- 		return 'fetch'
 
- 	} else if (capability.mozchunkedarraybuffer) {
 
- 		return 'moz-chunked-arraybuffer'
 
- 	} else if (capability.msstream) {
 
- 		return 'ms-stream'
 
- 	} else if (capability.arraybuffer && preferBinary) {
 
- 		return 'arraybuffer'
 
- 	} else if (capability.vbArray && preferBinary) {
 
- 		return 'text:vbarray'
 
- 	} else {
 
- 		return 'text'
 
- 	}
 
- }
 
- var ClientRequest = module.exports = function (opts) {
 
- 	var self = this
 
- 	stream.Writable.call(self)
 
- 	self._opts = opts
 
- 	self._body = []
 
- 	self._headers = {}
 
- 	if (opts.auth)
 
- 		self.setHeader('Authorization', 'Basic ' + new Buffer(opts.auth).toString('base64'))
 
- 	Object.keys(opts.headers).forEach(function (name) {
 
- 		self.setHeader(name, opts.headers[name])
 
- 	})
 
- 	var preferBinary
 
- 	var useFetch = true
 
- 	if (opts.mode === 'disable-fetch' || ('requestTimeout' in opts && !capability.abortController)) {
 
- 		// If the use of XHR should be preferred. Not typically needed.
 
- 		useFetch = false
 
- 		preferBinary = true
 
- 	} else if (opts.mode === 'prefer-streaming') {
 
- 		// If streaming is a high priority but binary compatibility and
 
- 		// the accuracy of the 'content-type' header aren't
 
- 		preferBinary = false
 
- 	} else if (opts.mode === 'allow-wrong-content-type') {
 
- 		// If streaming is more important than preserving the 'content-type' header
 
- 		preferBinary = !capability.overrideMimeType
 
- 	} else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') {
 
- 		// Use binary if text streaming may corrupt data or the content-type header, or for speed
 
- 		preferBinary = true
 
- 	} else {
 
- 		throw new Error('Invalid value for opts.mode')
 
- 	}
 
- 	self._mode = decideMode(preferBinary, useFetch)
 
- 	self._fetchTimer = null
 
- 	self.on('finish', function () {
 
- 		self._onFinish()
 
- 	})
 
- }
 
- inherits(ClientRequest, stream.Writable)
 
- ClientRequest.prototype.setHeader = function (name, value) {
 
- 	var self = this
 
- 	var lowerName = name.toLowerCase()
 
- 	// This check is not necessary, but it prevents warnings from browsers about setting unsafe
 
- 	// headers. To be honest I'm not entirely sure hiding these warnings is a good thing, but
 
- 	// http-browserify did it, so I will too.
 
- 	if (unsafeHeaders.indexOf(lowerName) !== -1)
 
- 		return
 
- 	self._headers[lowerName] = {
 
- 		name: name,
 
- 		value: value
 
- 	}
 
- }
 
- ClientRequest.prototype.getHeader = function (name) {
 
- 	var header = this._headers[name.toLowerCase()]
 
- 	if (header)
 
- 		return header.value
 
- 	return null
 
- }
 
- ClientRequest.prototype.removeHeader = function (name) {
 
- 	var self = this
 
- 	delete self._headers[name.toLowerCase()]
 
- }
 
- ClientRequest.prototype._onFinish = function () {
 
- 	var self = this
 
- 	if (self._destroyed)
 
- 		return
 
- 	var opts = self._opts
 
- 	var headersObj = self._headers
 
- 	var body = null
 
- 	if (opts.method !== 'GET' && opts.method !== 'HEAD') {
 
- 		if (capability.arraybuffer) {
 
- 			body = toArrayBuffer(Buffer.concat(self._body))
 
- 		} else if (capability.blobConstructor) {
 
- 			body = new global.Blob(self._body.map(function (buffer) {
 
- 				return toArrayBuffer(buffer)
 
- 			}), {
 
- 				type: (headersObj['content-type'] || {}).value || ''
 
- 			})
 
- 		} else {
 
- 			// get utf8 string
 
- 			body = Buffer.concat(self._body).toString()
 
- 		}
 
- 	}
 
- 	// create flattened list of headers
 
- 	var headersList = []
 
- 	Object.keys(headersObj).forEach(function (keyName) {
 
- 		var name = headersObj[keyName].name
 
- 		var value = headersObj[keyName].value
 
- 		if (Array.isArray(value)) {
 
- 			value.forEach(function (v) {
 
- 				headersList.push([name, v])
 
- 			})
 
- 		} else {
 
- 			headersList.push([name, value])
 
- 		}
 
- 	})
 
- 	if (self._mode === 'fetch') {
 
- 		var signal = null
 
- 		var fetchTimer = null
 
- 		if (capability.abortController) {
 
- 			var controller = new AbortController()
 
- 			signal = controller.signal
 
- 			self._fetchAbortController = controller
 
- 			if ('requestTimeout' in opts && opts.requestTimeout !== 0) {
 
- 				self._fetchTimer = global.setTimeout(function () {
 
- 					self.emit('requestTimeout')
 
- 					if (self._fetchAbortController)
 
- 						self._fetchAbortController.abort()
 
- 				}, opts.requestTimeout)
 
- 			}
 
- 		}
 
- 		global.fetch(self._opts.url, {
 
- 			method: self._opts.method,
 
- 			headers: headersList,
 
- 			body: body || undefined,
 
- 			mode: 'cors',
 
- 			credentials: opts.withCredentials ? 'include' : 'same-origin',
 
- 			signal: signal
 
- 		}).then(function (response) {
 
- 			self._fetchResponse = response
 
- 			self._connect()
 
- 		}, function (reason) {
 
- 			global.clearTimeout(self._fetchTimer)
 
- 			if (!self._destroyed)
 
- 				self.emit('error', reason)
 
- 		})
 
- 	} else {
 
- 		var xhr = self._xhr = new global.XMLHttpRequest()
 
- 		try {
 
- 			xhr.open(self._opts.method, self._opts.url, true)
 
- 		} catch (err) {
 
- 			process.nextTick(function () {
 
- 				self.emit('error', err)
 
- 			})
 
- 			return
 
- 		}
 
- 		// Can't set responseType on really old browsers
 
- 		if ('responseType' in xhr)
 
- 			xhr.responseType = self._mode.split(':')[0]
 
- 		if ('withCredentials' in xhr)
 
- 			xhr.withCredentials = !!opts.withCredentials
 
- 		if (self._mode === 'text' && 'overrideMimeType' in xhr)
 
- 			xhr.overrideMimeType('text/plain; charset=x-user-defined')
 
- 		if ('requestTimeout' in opts) {
 
- 			xhr.timeout = opts.requestTimeout
 
- 			xhr.ontimeout = function () {
 
- 				self.emit('requestTimeout')
 
- 			}
 
- 		}
 
- 		headersList.forEach(function (header) {
 
- 			xhr.setRequestHeader(header[0], header[1])
 
- 		})
 
- 		self._response = null
 
- 		xhr.onreadystatechange = function () {
 
- 			switch (xhr.readyState) {
 
- 				case rStates.LOADING:
 
- 				case rStates.DONE:
 
- 					self._onXHRProgress()
 
- 					break
 
- 			}
 
- 		}
 
- 		// Necessary for streaming in Firefox, since xhr.response is ONLY defined
 
- 		// in onprogress, not in onreadystatechange with xhr.readyState = 3
 
- 		if (self._mode === 'moz-chunked-arraybuffer') {
 
- 			xhr.onprogress = function () {
 
- 				self._onXHRProgress()
 
- 			}
 
- 		}
 
- 		xhr.onerror = function () {
 
- 			if (self._destroyed)
 
- 				return
 
- 			self.emit('error', new Error('XHR error'))
 
- 		}
 
- 		try {
 
- 			xhr.send(body)
 
- 		} catch (err) {
 
- 			process.nextTick(function () {
 
- 				self.emit('error', err)
 
- 			})
 
- 			return
 
- 		}
 
- 	}
 
- }
 
- /**
 
-  * Checks if xhr.status is readable and non-zero, indicating no error.
 
-  * Even though the spec says it should be available in readyState 3,
 
-  * accessing it throws an exception in IE8
 
-  */
 
- function statusValid (xhr) {
 
- 	try {
 
- 		var status = xhr.status
 
- 		return (status !== null && status !== 0)
 
- 	} catch (e) {
 
- 		return false
 
- 	}
 
- }
 
- ClientRequest.prototype._onXHRProgress = function () {
 
- 	var self = this
 
- 	if (!statusValid(self._xhr) || self._destroyed)
 
- 		return
 
- 	if (!self._response)
 
- 		self._connect()
 
- 	self._response._onXHRProgress()
 
- }
 
- ClientRequest.prototype._connect = function () {
 
- 	var self = this
 
- 	if (self._destroyed)
 
- 		return
 
- 	self._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode, self._fetchTimer)
 
- 	self._response.on('error', function(err) {
 
- 		self.emit('error', err)
 
- 	})
 
- 	self.emit('response', self._response)
 
- }
 
- ClientRequest.prototype._write = function (chunk, encoding, cb) {
 
- 	var self = this
 
- 	self._body.push(chunk)
 
- 	cb()
 
- }
 
- ClientRequest.prototype.abort = ClientRequest.prototype.destroy = function () {
 
- 	var self = this
 
- 	self._destroyed = true
 
- 	global.clearTimeout(self._fetchTimer)
 
- 	if (self._response)
 
- 		self._response._destroyed = true
 
- 	if (self._xhr)
 
- 		self._xhr.abort()
 
- 	else if (self._fetchAbortController)
 
- 		self._fetchAbortController.abort()
 
- }
 
- ClientRequest.prototype.end = function (data, encoding, cb) {
 
- 	var self = this
 
- 	if (typeof data === 'function') {
 
- 		cb = data
 
- 		data = undefined
 
- 	}
 
- 	stream.Writable.prototype.end.call(self, data, encoding, cb)
 
- }
 
- ClientRequest.prototype.flushHeaders = function () {}
 
- ClientRequest.prototype.setTimeout = function () {}
 
- ClientRequest.prototype.setNoDelay = function () {}
 
- ClientRequest.prototype.setSocketKeepAlive = function () {}
 
- // Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method
 
- var unsafeHeaders = [
 
- 	'accept-charset',
 
- 	'accept-encoding',
 
- 	'access-control-request-headers',
 
- 	'access-control-request-method',
 
- 	'connection',
 
- 	'content-length',
 
- 	'cookie',
 
- 	'cookie2',
 
- 	'date',
 
- 	'dnt',
 
- 	'expect',
 
- 	'host',
 
- 	'keep-alive',
 
- 	'origin',
 
- 	'referer',
 
- 	'te',
 
- 	'trailer',
 
- 	'transfer-encoding',
 
- 	'upgrade',
 
- 	'via'
 
- ]
 
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(3).Buffer, __webpack_require__(0), __webpack_require__(1)))
 
- /***/ }),
 
- /* 33 */
 
- /***/ (function(module, exports) {
 
- /* (ignored) */
 
- /***/ }),
 
- /* 34 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- "use strict";
 
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
 
- var Buffer = __webpack_require__(7).Buffer;
 
- var util = __webpack_require__(35);
 
- function copyBuffer(src, target, offset) {
 
-   src.copy(target, offset);
 
- }
 
- module.exports = function () {
 
-   function BufferList() {
 
-     _classCallCheck(this, BufferList);
 
-     this.head = null;
 
-     this.tail = null;
 
-     this.length = 0;
 
-   }
 
-   BufferList.prototype.push = function push(v) {
 
-     var entry = { data: v, next: null };
 
-     if (this.length > 0) this.tail.next = entry;else this.head = entry;
 
-     this.tail = entry;
 
-     ++this.length;
 
-   };
 
-   BufferList.prototype.unshift = function unshift(v) {
 
-     var entry = { data: v, next: this.head };
 
-     if (this.length === 0) this.tail = entry;
 
-     this.head = entry;
 
-     ++this.length;
 
-   };
 
-   BufferList.prototype.shift = function shift() {
 
-     if (this.length === 0) return;
 
-     var ret = this.head.data;
 
-     if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
 
-     --this.length;
 
-     return ret;
 
-   };
 
-   BufferList.prototype.clear = function clear() {
 
-     this.head = this.tail = null;
 
-     this.length = 0;
 
-   };
 
-   BufferList.prototype.join = function join(s) {
 
-     if (this.length === 0) return '';
 
-     var p = this.head;
 
-     var ret = '' + p.data;
 
-     while (p = p.next) {
 
-       ret += s + p.data;
 
-     }return ret;
 
-   };
 
-   BufferList.prototype.concat = function concat(n) {
 
-     if (this.length === 0) return Buffer.alloc(0);
 
-     if (this.length === 1) return this.head.data;
 
-     var ret = Buffer.allocUnsafe(n >>> 0);
 
-     var p = this.head;
 
-     var i = 0;
 
-     while (p) {
 
-       copyBuffer(p.data, ret, i);
 
-       i += p.data.length;
 
-       p = p.next;
 
-     }
 
-     return ret;
 
-   };
 
-   return BufferList;
 
- }();
 
- if (util && util.inspect && util.inspect.custom) {
 
-   module.exports.prototype[util.inspect.custom] = function () {
 
-     var obj = util.inspect({ length: this.length });
 
-     return this.constructor.name + ' ' + obj;
 
-   };
 
- }
 
- /***/ }),
 
- /* 35 */
 
- /***/ (function(module, exports) {
 
- /* (ignored) */
 
- /***/ }),
 
- /* 36 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- /* WEBPACK VAR INJECTION */(function(global) {var scope = (typeof global !== "undefined" && global) ||
 
-             (typeof self !== "undefined" && self) ||
 
-             window;
 
- var apply = Function.prototype.apply;
 
- // DOM APIs, for completeness
 
- exports.setTimeout = function() {
 
-   return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);
 
- };
 
- exports.setInterval = function() {
 
-   return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);
 
- };
 
- exports.clearTimeout =
 
- exports.clearInterval = function(timeout) {
 
-   if (timeout) {
 
-     timeout.close();
 
-   }
 
- };
 
- function Timeout(id, clearFn) {
 
-   this._id = id;
 
-   this._clearFn = clearFn;
 
- }
 
- Timeout.prototype.unref = Timeout.prototype.ref = function() {};
 
- Timeout.prototype.close = function() {
 
-   this._clearFn.call(scope, this._id);
 
- };
 
- // Does not start the time, just sets up the members needed.
 
- exports.enroll = function(item, msecs) {
 
-   clearTimeout(item._idleTimeoutId);
 
-   item._idleTimeout = msecs;
 
- };
 
- exports.unenroll = function(item) {
 
-   clearTimeout(item._idleTimeoutId);
 
-   item._idleTimeout = -1;
 
- };
 
- exports._unrefActive = exports.active = function(item) {
 
-   clearTimeout(item._idleTimeoutId);
 
-   var msecs = item._idleTimeout;
 
-   if (msecs >= 0) {
 
-     item._idleTimeoutId = setTimeout(function onTimeout() {
 
-       if (item._onTimeout)
 
-         item._onTimeout();
 
-     }, msecs);
 
-   }
 
- };
 
- // setimmediate attaches itself to the global object
 
- __webpack_require__(37);
 
- // On some exotic environments, it's not clear which object `setimmediate` was
 
- // able to install onto.  Search each possibility in the same order as the
 
- // `setimmediate` library.
 
- exports.setImmediate = (typeof self !== "undefined" && self.setImmediate) ||
 
-                        (typeof global !== "undefined" && global.setImmediate) ||
 
-                        (this && this.setImmediate);
 
- exports.clearImmediate = (typeof self !== "undefined" && self.clearImmediate) ||
 
-                          (typeof global !== "undefined" && global.clearImmediate) ||
 
-                          (this && this.clearImmediate);
 
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
 
- /***/ }),
 
- /* 37 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- /* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) {
 
-     "use strict";
 
-     if (global.setImmediate) {
 
-         return;
 
-     }
 
-     var nextHandle = 1; // Spec says greater than zero
 
-     var tasksByHandle = {};
 
-     var currentlyRunningATask = false;
 
-     var doc = global.document;
 
-     var registerImmediate;
 
-     function setImmediate(callback) {
 
-       // Callback can either be a function or a string
 
-       if (typeof callback !== "function") {
 
-         callback = new Function("" + callback);
 
-       }
 
-       // Copy function arguments
 
-       var args = new Array(arguments.length - 1);
 
-       for (var i = 0; i < args.length; i++) {
 
-           args[i] = arguments[i + 1];
 
-       }
 
-       // Store and register the task
 
-       var task = { callback: callback, args: args };
 
-       tasksByHandle[nextHandle] = task;
 
-       registerImmediate(nextHandle);
 
-       return nextHandle++;
 
-     }
 
-     function clearImmediate(handle) {
 
-         delete tasksByHandle[handle];
 
-     }
 
-     function run(task) {
 
-         var callback = task.callback;
 
-         var args = task.args;
 
-         switch (args.length) {
 
-         case 0:
 
-             callback();
 
-             break;
 
-         case 1:
 
-             callback(args[0]);
 
-             break;
 
-         case 2:
 
-             callback(args[0], args[1]);
 
-             break;
 
-         case 3:
 
-             callback(args[0], args[1], args[2]);
 
-             break;
 
-         default:
 
-             callback.apply(undefined, args);
 
-             break;
 
-         }
 
-     }
 
-     function runIfPresent(handle) {
 
-         // From the spec: "Wait until any invocations of this algorithm started before this one have completed."
 
-         // So if we're currently running a task, we'll need to delay this invocation.
 
-         if (currentlyRunningATask) {
 
-             // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a
 
-             // "too much recursion" error.
 
-             setTimeout(runIfPresent, 0, handle);
 
-         } else {
 
-             var task = tasksByHandle[handle];
 
-             if (task) {
 
-                 currentlyRunningATask = true;
 
-                 try {
 
-                     run(task);
 
-                 } finally {
 
-                     clearImmediate(handle);
 
-                     currentlyRunningATask = false;
 
-                 }
 
-             }
 
-         }
 
-     }
 
-     function installNextTickImplementation() {
 
-         registerImmediate = function(handle) {
 
-             process.nextTick(function () { runIfPresent(handle); });
 
-         };
 
-     }
 
-     function canUsePostMessage() {
 
-         // The test against `importScripts` prevents this implementation from being installed inside a web worker,
 
-         // where `global.postMessage` means something completely different and can't be used for this purpose.
 
-         if (global.postMessage && !global.importScripts) {
 
-             var postMessageIsAsynchronous = true;
 
-             var oldOnMessage = global.onmessage;
 
-             global.onmessage = function() {
 
-                 postMessageIsAsynchronous = false;
 
-             };
 
-             global.postMessage("", "*");
 
-             global.onmessage = oldOnMessage;
 
-             return postMessageIsAsynchronous;
 
-         }
 
-     }
 
-     function installPostMessageImplementation() {
 
-         // Installs an event handler on `global` for the `message` event: see
 
-         // * https://developer.mozilla.org/en/DOM/window.postMessage
 
-         // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages
 
-         var messagePrefix = "setImmediate$" + Math.random() + "$";
 
-         var onGlobalMessage = function(event) {
 
-             if (event.source === global &&
 
-                 typeof event.data === "string" &&
 
-                 event.data.indexOf(messagePrefix) === 0) {
 
-                 runIfPresent(+event.data.slice(messagePrefix.length));
 
-             }
 
-         };
 
-         if (global.addEventListener) {
 
-             global.addEventListener("message", onGlobalMessage, false);
 
-         } else {
 
-             global.attachEvent("onmessage", onGlobalMessage);
 
-         }
 
-         registerImmediate = function(handle) {
 
-             global.postMessage(messagePrefix + handle, "*");
 
-         };
 
-     }
 
-     function installMessageChannelImplementation() {
 
-         var channel = new MessageChannel();
 
-         channel.port1.onmessage = function(event) {
 
-             var handle = event.data;
 
-             runIfPresent(handle);
 
-         };
 
-         registerImmediate = function(handle) {
 
-             channel.port2.postMessage(handle);
 
-         };
 
-     }
 
-     function installReadyStateChangeImplementation() {
 
-         var html = doc.documentElement;
 
-         registerImmediate = function(handle) {
 
-             // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted
 
-             // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.
 
-             var script = doc.createElement("script");
 
-             script.onreadystatechange = function () {
 
-                 runIfPresent(handle);
 
-                 script.onreadystatechange = null;
 
-                 html.removeChild(script);
 
-                 script = null;
 
-             };
 
-             html.appendChild(script);
 
-         };
 
-     }
 
-     function installSetTimeoutImplementation() {
 
-         registerImmediate = function(handle) {
 
-             setTimeout(runIfPresent, 0, handle);
 
-         };
 
-     }
 
-     // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.
 
-     var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);
 
-     attachTo = attachTo && attachTo.setTimeout ? attachTo : global;
 
-     // Don't get fooled by e.g. browserify environments.
 
-     if ({}.toString.call(global.process) === "[object process]") {
 
-         // For Node.js before 0.9
 
-         installNextTickImplementation();
 
-     } else if (canUsePostMessage()) {
 
-         // For non-IE10 modern browsers
 
-         installPostMessageImplementation();
 
-     } else if (global.MessageChannel) {
 
-         // For web workers, where supported
 
-         installMessageChannelImplementation();
 
-     } else if (doc && "onreadystatechange" in doc.createElement("script")) {
 
-         // For IE 6–8
 
-         installReadyStateChangeImplementation();
 
-     } else {
 
-         // For older browsers
 
-         installSetTimeoutImplementation();
 
-     }
 
-     attachTo.setImmediate = setImmediate;
 
-     attachTo.clearImmediate = clearImmediate;
 
- }(typeof self === "undefined" ? typeof global === "undefined" ? this : global : self));
 
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0), __webpack_require__(1)))
 
- /***/ }),
 
- /* 38 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- /* WEBPACK VAR INJECTION */(function(global) {
 
- /**
 
-  * Module exports.
 
-  */
 
- module.exports = deprecate;
 
- /**
 
-  * Mark that a method should not be used.
 
-  * Returns a modified function which warns once by default.
 
-  *
 
-  * If `localStorage.noDeprecation = true` is set, then it is a no-op.
 
-  *
 
-  * If `localStorage.throwDeprecation = true` is set, then deprecated functions
 
-  * will throw an Error when invoked.
 
-  *
 
-  * If `localStorage.traceDeprecation = true` is set, then deprecated functions
 
-  * will invoke `console.trace()` instead of `console.error()`.
 
-  *
 
-  * @param {Function} fn - the function to deprecate
 
-  * @param {String} msg - the string to print to the console when `fn` is invoked
 
-  * @returns {Function} a new "deprecated" version of `fn`
 
-  * @api public
 
-  */
 
- function deprecate (fn, msg) {
 
-   if (config('noDeprecation')) {
 
-     return fn;
 
-   }
 
-   var warned = false;
 
-   function deprecated() {
 
-     if (!warned) {
 
-       if (config('throwDeprecation')) {
 
-         throw new Error(msg);
 
-       } else if (config('traceDeprecation')) {
 
-         console.trace(msg);
 
-       } else {
 
-         console.warn(msg);
 
-       }
 
-       warned = true;
 
-     }
 
-     return fn.apply(this, arguments);
 
-   }
 
-   return deprecated;
 
- }
 
- /**
 
-  * Checks `localStorage` for boolean values for the given `name`.
 
-  *
 
-  * @param {String} name
 
-  * @returns {Boolean}
 
-  * @api private
 
-  */
 
- function config (name) {
 
-   // accessing global.localStorage can trigger a DOMException in sandboxed iframes
 
-   try {
 
-     if (!global.localStorage) return false;
 
-   } catch (_) {
 
-     return false;
 
-   }
 
-   var val = global.localStorage[name];
 
-   if (null == val) return false;
 
-   return String(val).toLowerCase() === 'true';
 
- }
 
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
 
- /***/ }),
 
- /* 39 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- "use strict";
 
- // Copyright Joyent, Inc. and other Node contributors.
 
- //
 
- // Permission is hereby granted, free of charge, to any person obtaining a
 
- // copy of this software and associated documentation files (the
 
- // "Software"), to deal in the Software without restriction, including
 
- // without limitation the rights to use, copy, modify, merge, publish,
 
- // distribute, sublicense, and/or sell copies of the Software, and to permit
 
- // persons to whom the Software is furnished to do so, subject to the
 
- // following conditions:
 
- //
 
- // The above copyright notice and this permission notice shall be included
 
- // in all copies or substantial portions of the Software.
 
- //
 
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
 
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
 
- // a passthrough stream.
 
- // basically just the most minimal sort of Transform stream.
 
- // Every written chunk gets output as-is.
 
- module.exports = PassThrough;
 
- var Transform = __webpack_require__(20);
 
- /*<replacement>*/
 
- var util = Object.create(__webpack_require__(5));
 
- util.inherits = __webpack_require__(2);
 
- /*</replacement>*/
 
- util.inherits(PassThrough, Transform);
 
- function PassThrough(options) {
 
-   if (!(this instanceof PassThrough)) return new PassThrough(options);
 
-   Transform.call(this, options);
 
- }
 
- PassThrough.prototype._transform = function (chunk, encoding, cb) {
 
-   cb(null, chunk);
 
- };
 
- /***/ }),
 
- /* 40 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- var Buffer = __webpack_require__(3).Buffer
 
- module.exports = function (buf) {
 
- 	// If the buffer is backed by a Uint8Array, a faster version will work
 
- 	if (buf instanceof Uint8Array) {
 
- 		// If the buffer isn't a subarray, return the underlying ArrayBuffer
 
- 		if (buf.byteOffset === 0 && buf.byteLength === buf.buffer.byteLength) {
 
- 			return buf.buffer
 
- 		} else if (typeof buf.buffer.slice === 'function') {
 
- 			// Otherwise we need to get a proper copy
 
- 			return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength)
 
- 		}
 
- 	}
 
- 	if (Buffer.isBuffer(buf)) {
 
- 		// This is the slow version that will work with any Buffer
 
- 		// implementation (even in old browsers)
 
- 		var arrayCopy = new Uint8Array(buf.length)
 
- 		var len = buf.length
 
- 		for (var i = 0; i < len; i++) {
 
- 			arrayCopy[i] = buf[i]
 
- 		}
 
- 		return arrayCopy.buffer
 
- 	} else {
 
- 		throw new Error('Argument must be a Buffer')
 
- 	}
 
- }
 
- /***/ }),
 
- /* 41 */
 
- /***/ (function(module, exports) {
 
- module.exports = extend
 
- var hasOwnProperty = Object.prototype.hasOwnProperty;
 
- function extend() {
 
-     var target = {}
 
-     for (var i = 0; i < arguments.length; i++) {
 
-         var source = arguments[i]
 
-         for (var key in source) {
 
-             if (hasOwnProperty.call(source, key)) {
 
-                 target[key] = source[key]
 
-             }
 
-         }
 
-     }
 
-     return target
 
- }
 
- /***/ }),
 
- /* 42 */
 
- /***/ (function(module, exports) {
 
- module.exports = {
 
-   "100": "Continue",
 
-   "101": "Switching Protocols",
 
-   "102": "Processing",
 
-   "200": "OK",
 
-   "201": "Created",
 
-   "202": "Accepted",
 
-   "203": "Non-Authoritative Information",
 
-   "204": "No Content",
 
-   "205": "Reset Content",
 
-   "206": "Partial Content",
 
-   "207": "Multi-Status",
 
-   "208": "Already Reported",
 
-   "226": "IM Used",
 
-   "300": "Multiple Choices",
 
-   "301": "Moved Permanently",
 
-   "302": "Found",
 
-   "303": "See Other",
 
-   "304": "Not Modified",
 
-   "305": "Use Proxy",
 
-   "307": "Temporary Redirect",
 
-   "308": "Permanent Redirect",
 
-   "400": "Bad Request",
 
-   "401": "Unauthorized",
 
-   "402": "Payment Required",
 
-   "403": "Forbidden",
 
-   "404": "Not Found",
 
-   "405": "Method Not Allowed",
 
-   "406": "Not Acceptable",
 
-   "407": "Proxy Authentication Required",
 
-   "408": "Request Timeout",
 
-   "409": "Conflict",
 
-   "410": "Gone",
 
-   "411": "Length Required",
 
-   "412": "Precondition Failed",
 
-   "413": "Payload Too Large",
 
-   "414": "URI Too Long",
 
-   "415": "Unsupported Media Type",
 
-   "416": "Range Not Satisfiable",
 
-   "417": "Expectation Failed",
 
-   "418": "I'm a teapot",
 
-   "421": "Misdirected Request",
 
-   "422": "Unprocessable Entity",
 
-   "423": "Locked",
 
-   "424": "Failed Dependency",
 
-   "425": "Unordered Collection",
 
-   "426": "Upgrade Required",
 
-   "428": "Precondition Required",
 
-   "429": "Too Many Requests",
 
-   "431": "Request Header Fields Too Large",
 
-   "451": "Unavailable For Legal Reasons",
 
-   "500": "Internal Server Error",
 
-   "501": "Not Implemented",
 
-   "502": "Bad Gateway",
 
-   "503": "Service Unavailable",
 
-   "504": "Gateway Timeout",
 
-   "505": "HTTP Version Not Supported",
 
-   "506": "Variant Also Negotiates",
 
-   "507": "Insufficient Storage",
 
-   "508": "Loop Detected",
 
-   "509": "Bandwidth Limit Exceeded",
 
-   "510": "Not Extended",
 
-   "511": "Network Authentication Required"
 
- }
 
- /***/ }),
 
- /* 43 */
 
- /***/ (function(module, exports, __webpack_require__) {
 
- /* WEBPACK VAR INJECTION */(function(process) {// Copyright Joyent, Inc. and other Node contributors.
 
- //
 
- // Permission is hereby granted, free of charge, to any person obtaining a
 
- // copy of this software and associated documentation files (the
 
- // "Software"), to deal in the Software without restriction, including
 
- // without limitation the rights to use, copy, modify, merge, publish,
 
- // distribute, sublicense, and/or sell copies of the Software, and to permit
 
- // persons to whom the Software is furnished to do so, subject to the
 
- // following conditions:
 
- //
 
- // The above copyright notice and this permission notice shall be included
 
- // in all copies or substantial portions of the Software.
 
- //
 
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
 
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
 
- var getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||
 
-   function getOwnPropertyDescriptors(obj) {
 
-     var keys = Object.keys(obj);
 
-     var descriptors = {};
 
-     for (var i = 0; i < keys.length; i++) {
 
-       descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);
 
-     }
 
-     return descriptors;
 
-   };
 
- var formatRegExp = /%[sdj%]/g;
 
- exports.format = function(f) {
 
-   if (!isString(f)) {
 
-     var objects = [];
 
-     for (var i = 0; i < arguments.length; i++) {
 
-       objects.push(inspect(arguments[i]));
 
-     }
 
-     return objects.join(' ');
 
-   }
 
-   var i = 1;
 
-   var args = arguments;
 
-   var len = args.length;
 
-   var str = String(f).replace(formatRegExp, function(x) {
 
-     if (x === '%%') return '%';
 
-     if (i >= len) return x;
 
-     switch (x) {
 
-       case '%s': return String(args[i++]);
 
-       case '%d': return Number(args[i++]);
 
-       case '%j':
 
-         try {
 
-           return JSON.stringify(args[i++]);
 
-         } catch (_) {
 
-           return '[Circular]';
 
-         }
 
-       default:
 
-         return x;
 
-     }
 
-   });
 
-   for (var x = args[i]; i < len; x = args[++i]) {
 
-     if (isNull(x) || !isObject(x)) {
 
-       str += ' ' + x;
 
-     } else {
 
-       str += ' ' + inspect(x);
 
-     }
 
-   }
 
-   return str;
 
- };
 
- // Mark that a method should not be used.
 
- // Returns a modified function which warns once by default.
 
- // If --no-deprecation is set, then it is a no-op.
 
- exports.deprecate = function(fn, msg) {
 
-   if (typeof process !== 'undefined' && process.noDeprecation === true) {
 
-     return fn;
 
-   }
 
-   // Allow for deprecating things in the process of starting up.
 
-   if (typeof process === 'undefined') {
 
-     return function() {
 
-       return exports.deprecate(fn, msg).apply(this, arguments);
 
-     };
 
-   }
 
-   var warned = false;
 
-   function deprecated() {
 
-     if (!warned) {
 
-       if (process.throwDeprecation) {
 
-         throw new Error(msg);
 
-       } else if (process.traceDeprecation) {
 
-         console.trace(msg);
 
-       } else {
 
-         console.error(msg);
 
-       }
 
-       warned = true;
 
-     }
 
-     return fn.apply(this, arguments);
 
-   }
 
-   return deprecated;
 
- };
 
- var debugs = {};
 
- var debugEnviron;
 
- exports.debuglog = function(set) {
 
-   if (isUndefined(debugEnviron))
 
-     debugEnviron = process.env.NODE_DEBUG || '';
 
-   set = set.toUpperCase();
 
-   if (!debugs[set]) {
 
-     if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
 
-       var pid = process.pid;
 
-       debugs[set] = function() {
 
-         var msg = exports.format.apply(exports, arguments);
 
-         console.error('%s %d: %s', set, pid, msg);
 
-       };
 
-     } else {
 
-       debugs[set] = function() {};
 
-     }
 
-   }
 
-   return debugs[set];
 
- };
 
- /**
 
-  * Echos the value of a value. Trys to print the value out
 
-  * in the best way possible given the different types.
 
-  *
 
-  * @param {Object} obj The object to print out.
 
-  * @param {Object} opts Optional options object that alters the output.
 
-  */
 
- /* legacy: obj, showHidden, depth, colors*/
 
- function inspect(obj, opts) {
 
-   // default options
 
-   var ctx = {
 
-     seen: [],
 
-     stylize: stylizeNoColor
 
-   };
 
-   // legacy...
 
-   if (arguments.length >= 3) ctx.depth = arguments[2];
 
-   if (arguments.length >= 4) ctx.colors = arguments[3];
 
-   if (isBoolean(opts)) {
 
-     // legacy...
 
-     ctx.showHidden = opts;
 
-   } else if (opts) {
 
-     // got an "options" object
 
-     exports._extend(ctx, opts);
 
-   }
 
-   // set default options
 
-   if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
 
-   if (isUndefined(ctx.depth)) ctx.depth = 2;
 
-   if (isUndefined(ctx.colors)) ctx.colors = false;
 
-   if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
 
-   if (ctx.colors) ctx.stylize = stylizeWithColor;
 
-   return formatValue(ctx, obj, ctx.depth);
 
- }
 
- exports.inspect = inspect;
 
- // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
 
- inspect.colors = {
 
-   'bold' : [1, 22],
 
-   'italic' : [3, 23],
 
-   'underline' : [4, 24],
 
-   'inverse' : [7, 27],
 
-   'white' : [37, 39],
 
-   'grey' : [90, 39],
 
-   'black' : [30, 39],
 
-   'blue' : [34, 39],
 
-   'cyan' : [36, 39],
 
-   'green' : [32, 39],
 
-   'magenta' : [35, 39],
 
-   'red' : [31, 39],
 
-   'yellow' : [33, 39]
 
- };
 
- // Don't use 'blue' not visible on cmd.exe
 
- inspect.styles = {
 
-   'special': 'cyan',
 
-   'number': 'yellow',
 
-   'boolean': 'yellow',
 
-   'undefined': 'grey',
 
-   'null': 'bold',
 
-   'string': 'green',
 
-   'date': 'magenta',
 
-   // "name": intentionally not styling
 
-   'regexp': 'red'
 
- };
 
- function stylizeWithColor(str, styleType) {
 
-   var style = inspect.styles[styleType];
 
-   if (style) {
 
-     return '\u001b[' + inspect.colors[style][0] + 'm' + str +
 
-            '\u001b[' + inspect.colors[style][1] + 'm';
 
-   } else {
 
-     return str;
 
-   }
 
- }
 
- function stylizeNoColor(str, styleType) {
 
-   return str;
 
- }
 
- function arrayToHash(array) {
 
-   var hash = {};
 
-   array.forEach(function(val, idx) {
 
-     hash[val] = true;
 
-   });
 
-   return hash;
 
- }
 
- function formatValue(ctx, value, recurseTimes) {
 
-   // Provide a hook for user-specified inspect functions.
 
-   // Check that value is an object with an inspect function on it
 
-   if (ctx.customInspect &&
 
-       value &&
 
-       isFunction(value.inspect) &&
 
-       // Filter out the util module, it's inspect function is special
 
-       value.inspect !== exports.inspect &&
 
-       // Also filter out any prototype objects using the circular check.
 
-       !(value.constructor && value.constructor.prototype === value)) {
 
-     var ret = value.inspect(recurseTimes, ctx);
 
-     if (!isString(ret)) {
 
-       ret = formatValue(ctx, ret, recurseTimes);
 
-     }
 
-     return ret;
 
-   }
 
-   // Primitive types cannot have properties
 
-   var primitive = formatPrimitive(ctx, value);
 
-   if (primitive) {
 
-     return primitive;
 
-   }
 
-   // Look up the keys of the object.
 
-   var keys = Object.keys(value);
 
-   var visibleKeys = arrayToHash(keys);
 
-   if (ctx.showHidden) {
 
-     keys = Object.getOwnPropertyNames(value);
 
-   }
 
-   // IE doesn't make error fields non-enumerable
 
-   // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
 
-   if (isError(value)
 
-       && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
 
-     return formatError(value);
 
-   }
 
-   // Some type of object without properties can be shortcutted.
 
-   if (keys.length === 0) {
 
-     if (isFunction(value)) {
 
-       var name = value.name ? ': ' + value.name : '';
 
-       return ctx.stylize('[Function' + name + ']', 'special');
 
-     }
 
-     if (isRegExp(value)) {
 
-       return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
 
-     }
 
-     if (isDate(value)) {
 
-       return ctx.stylize(Date.prototype.toString.call(value), 'date');
 
-     }
 
-     if (isError(value)) {
 
-       return formatError(value);
 
-     }
 
-   }
 
-   var base = '', array = false, braces = ['{', '}'];
 
-   // Make Array say that they are Array
 
-   if (isArray(value)) {
 
-     array = true;
 
-     braces = ['[', ']'];
 
-   }
 
-   // Make functions say that they are functions
 
-   if (isFunction(value)) {
 
-     var n = value.name ? ': ' + value.name : '';
 
-     base = ' [Function' + n + ']';
 
-   }
 
-   // Make RegExps say that they are RegExps
 
-   if (isRegExp(value)) {
 
-     base = ' ' + RegExp.prototype.toString.call(value);
 
-   }
 
-   // Make dates with properties first say the date
 
-   if (isDate(value)) {
 
-     base = ' ' + Date.prototype.toUTCString.call(value);
 
-   }
 
-   // Make error with message first say the error
 
-   if (isError(value)) {
 
-     base = ' ' + formatError(value);
 
-   }
 
-   if (keys.length === 0 && (!array || value.length == 0)) {
 
-     return braces[0] + base + braces[1];
 
-   }
 
-   if (recurseTimes < 0) {
 
-     if (isRegExp(value)) {
 
-       return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
 
-     } else {
 
-       return ctx.stylize('[Object]', 'special');
 
-     }
 
-   }
 
-   ctx.seen.push(value);
 
-   var output;
 
-   if (array) {
 
-     output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
 
-   } else {
 
-     output = keys.map(function(key) {
 
-       return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
 
-     });
 
-   }
 
-   ctx.seen.pop();
 
-   return reduceToSingleString(output, base, braces);
 
- }
 
- function formatPrimitive(ctx, value) {
 
-   if (isUndefined(value))
 
-     return ctx.stylize('undefined', 'undefined');
 
-   if (isString(value)) {
 
-     var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
 
-                                              .replace(/'/g, "\\'")
 
-                                              .replace(/\\"/g, '"') + '\'';
 
-     return ctx.stylize(simple, 'string');
 
-   }
 
-   if (isNumber(value))
 
-     return ctx.stylize('' + value, 'number');
 
-   if (isBoolean(value))
 
-     return ctx.stylize('' + value, 'boolean');
 
-   // For some reason typeof null is "object", so special case here.
 
-   if (isNull(value))
 
-     return ctx.stylize('null', 'null');
 
- }
 
- function formatError(value) {
 
-   return '[' + Error.prototype.toString.call(value) + ']';
 
- }
 
- function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
 
-   var output = [];
 
-   for (var i = 0, l = value.length; i < l; ++i) {
 
-     if (hasOwnProperty(value, String(i))) {
 
-       output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
 
-           String(i), true));
 
-     } else {
 
-       output.push('');
 
-     }
 
-   }
 
-   keys.forEach(function(key) {
 
-     if (!key.match(/^\d+$/)) {
 
-       output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
 
-           key, true));
 
-     }
 
-   });
 
-   return output;
 
- }
 
- function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
 
-   var name, str, desc;
 
-   desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
 
-   if (desc.get) {
 
-     if (desc.set) {
 
-       str = ctx.stylize('[Getter/Setter]', 'special');
 
-     } else {
 
-       str = ctx.stylize('[Getter]', 'special');
 
-     }
 
-   } else {
 
-     if (desc.set) {
 
-       str = ctx.stylize('[Setter]', 'special');
 
-     }
 
-   }
 
-   if (!hasOwnProperty(visibleKeys, key)) {
 
-     name = '[' + key + ']';
 
-   }
 
-   if (!str) {
 
-     if (ctx.seen.indexOf(desc.value) < 0) {
 
-       if (isNull(recurseTimes)) {
 
-         str = formatValue(ctx, desc.value, null);
 
-       } else {
 
-         str = formatValue(ctx, desc.value, recurseTimes - 1);
 
-       }
 
-       if (str.indexOf('\n') > -1) {
 
-         if (array) {
 
-           str = str.split('\n').map(function(line) {
 
-             return '  ' + line;
 
-           }).join('\n').substr(2);
 
-         } else {
 
-           str = '\n' + str.split('\n').map(function(line) {
 
-             return '   ' + line;
 
-           }).join('\n');
 
-         }
 
-       }
 
-     } else {
 
-       str = ctx.stylize('[Circular]', 'special');
 
-     }
 
-   }
 
-   if (isUndefined(name)) {
 
-     if (array && key.match(/^\d+$/)) {
 
-       return str;
 
-     }
 
-     name = JSON.stringify('' + key);
 
-     if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
 
-       name = name.substr(1, name.length - 2);
 
-       name = ctx.stylize(name, 'name');
 
-     } else {
 
-       name = name.replace(/'/g, "\\'")
 
-                  .replace(/\\"/g, '"')
 
-                  .replace(/(^"|"$)/g, "'");
 
-       name = ctx.stylize(name, 'string');
 
-     }
 
-   }
 
-   return name + ': ' + str;
 
- }
 
- function reduceToSingleString(output, base, braces) {
 
-   var numLinesEst = 0;
 
-   var length = output.reduce(function(prev, cur) {
 
-     numLinesEst++;
 
-     if (cur.indexOf('\n') >= 0) numLinesEst++;
 
-     return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
 
-   }, 0);
 
-   if (length > 60) {
 
-     return braces[0] +
 
-            (base === '' ? '' : base + '\n ') +
 
-            ' ' +
 
-            output.join(',\n  ') +
 
-            ' ' +
 
-            braces[1];
 
-   }
 
-   return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
 
- }
 
- // NOTE: These type checking functions intentionally don't use `instanceof`
 
- // because it is fragile and can be easily faked with `Object.create()`.
 
- function isArray(ar) {
 
-   return Array.isArray(ar);
 
- }
 
- exports.isArray = isArray;
 
- function isBoolean(arg) {
 
-   return typeof arg === 'boolean';
 
- }
 
- exports.isBoolean = isBoolean;
 
- function isNull(arg) {
 
-   return arg === null;
 
- }
 
- exports.isNull = isNull;
 
- function isNullOrUndefined(arg) {
 
-   return arg == null;
 
- }
 
- exports.isNullOrUndefined = isNullOrUndefined;
 
- function isNumber(arg) {
 
-   return typeof arg === 'number';
 
- }
 
- exports.isNumber = isNumber;
 
- function isString(arg) {
 
-   return typeof arg === 'string';
 
- }
 
- exports.isString = isString;
 
- function isSymbol(arg) {
 
-   return typeof arg === 'symbol';
 
- }
 
- exports.isSymbol = isSymbol;
 
- function isUndefined(arg) {
 
-   return arg === void 0;
 
- }
 
- exports.isUndefined = isUndefined;
 
- function isRegExp(re) {
 
-   return isObject(re) && objectToString(re) === '[object RegExp]';
 
- }
 
- exports.isRegExp = isRegExp;
 
- function isObject(arg) {
 
-   return typeof arg === 'object' && arg !== null;
 
- }
 
- exports.isObject = isObject;
 
- function isDate(d) {
 
-   return isObject(d) && objectToString(d) === '[object Date]';
 
- }
 
- exports.isDate = isDate;
 
- function isError(e) {
 
-   return isObject(e) &&
 
-       (objectToString(e) === '[object Error]' || e instanceof Error);
 
- }
 
- exports.isError = isError;
 
- function isFunction(arg) {
 
-   return typeof arg === 'function';
 
- }
 
- exports.isFunction = isFunction;
 
- function isPrimitive(arg) {
 
-   return arg === null ||
 
-          typeof arg === 'boolean' ||
 
-          typeof arg === 'number' ||
 
-          typeof arg === 'string' ||
 
-          typeof arg === 'symbol' ||  // ES6 symbol
 
-          typeof arg === 'undefined';
 
- }
 
- exports.isPrimitive = isPrimitive;
 
- exports.isBuffer = __webpack_require__(44);
 
- function objectToString(o) {
 
-   return Object.prototype.toString.call(o);
 
- }
 
- function pad(n) {
 
-   return n < 10 ? '0' + n.toString(10) : n.toString(10);
 
- }
 
- var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
 
-               'Oct', 'Nov', 'Dec'];
 
- // 26 Feb 16:19:34
 
- function timestamp() {
 
-   var d = new Date();
 
-   var time = [pad(d.getHours()),
 
-               pad(d.getMinutes()),
 
-               pad(d.getSeconds())].join(':');
 
-   return [d.getDate(), months[d.getMonth()], time].join(' ');
 
- }
 
- // log is just a thin wrapper to console.log that prepends a timestamp
 
- exports.log = function() {
 
-   console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
 
- };
 
- /**
 
-  * Inherit the prototype methods from one constructor into another.
 
-  *
 
-  * The Function.prototype.inherits from lang.js rewritten as a standalone
 
-  * function (not on Function.prototype). NOTE: If this file is to be loaded
 
-  * during bootstrapping this function needs to be rewritten using some native
 
-  * functions as prototype setup using normal JavaScript does not work as
 
-  * expected during bootstrapping (see mirror.js in r114903).
 
-  *
 
-  * @param {function} ctor Constructor function which needs to inherit the
 
-  *     prototype.
 
-  * @param {function} superCtor Constructor function to inherit prototype from.
 
-  */
 
- exports.inherits = __webpack_require__(2);
 
- exports._extend = function(origin, add) {
 
-   // Don't do anything if add isn't an object
 
-   if (!add || !isObject(add)) return origin;
 
-   var keys = Object.keys(add);
 
-   var i = keys.length;
 
-   while (i--) {
 
-     origin[keys[i]] = add[keys[i]];
 
-   }
 
-   return origin;
 
- };
 
- function hasOwnProperty(obj, prop) {
 
-   return Object.prototype.hasOwnProperty.call(obj, prop);
 
- }
 
- var kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;
 
- exports.promisify = function promisify(original) {
 
-   if (typeof original !== 'function')
 
-     throw new TypeError('The "original" argument must be of type Function');
 
-   if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {
 
-     var fn = original[kCustomPromisifiedSymbol];
 
-     if (typeof fn !== 'function') {
 
-       throw new TypeError('The "util.promisify.custom" argument must be of type Function');
 
-     }
 
-     Object.defineProperty(fn, kCustomPromisifiedSymbol, {
 
-       value: fn, enumerable: false, writable: false, configurable: true
 
-     });
 
-     return fn;
 
-   }
 
-   function fn() {
 
-     var promiseResolve, promiseReject;
 
-     var promise = new Promise(function (resolve, reject) {
 
-       promiseResolve = resolve;
 
-       promiseReject = reject;
 
-     });
 
-     var args = [];
 
-     for (var i = 0; i < arguments.length; i++) {
 
-       args.push(arguments[i]);
 
-     }
 
-     args.push(function (err, value) {
 
-       if (err) {
 
-         promiseReject(err);
 
-       } else {
 
-         promiseResolve(value);
 
-       }
 
-     });
 
-     try {
 
-       original.apply(this, args);
 
-     } catch (err) {
 
-       promiseReject(err);
 
-     }
 
-     return promise;
 
-   }
 
-   Object.setPrototypeOf(fn, Object.getPrototypeOf(original));
 
-   if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {
 
-     value: fn, enumerable: false, writable: false, configurable: true
 
-   });
 
-   return Object.defineProperties(
 
-     fn,
 
-     getOwnPropertyDescriptors(original)
 
-   );
 
- }
 
- exports.promisify.custom = kCustomPromisifiedSymbol
 
- function callbackifyOnRejected(reason, cb) {
 
-   // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).
 
-   // Because `null` is a special error value in callbacks which means "no error
 
-   // occurred", we error-wrap so the callback consumer can distinguish between
 
-   // "the promise rejected with null" or "the promise fulfilled with undefined".
 
-   if (!reason) {
 
-     var newReason = new Error('Promise was rejected with a falsy value');
 
-     newReason.reason = reason;
 
-     reason = newReason;
 
-   }
 
-   return cb(reason);
 
- }
 
- function callbackify(original) {
 
-   if (typeof original !== 'function') {
 
-     throw new TypeError('The "original" argument must be of type Function');
 
-   }
 
-   // We DO NOT return the promise as it gives the user a false sense that
 
-   // the promise is actually somehow related to the callback's execution
 
-   // and that the callback throwing will reject the promise.
 
-   function callbackified() {
 
-     var args = [];
 
-     for (var i = 0; i < arguments.length; i++) {
 
-       args.push(arguments[i]);
 
-     }
 
-     var maybeCb = args.pop();
 
-     if (typeof maybeCb !== 'function') {
 
-       throw new TypeError('The last argument must be of type Function');
 
-     }
 
-     var self = this;
 
-     var cb = function() {
 
-       return maybeCb.apply(self, arguments);
 
-     };
 
-     // In true node style we process the callback on `nextTick` with all the
 
-     // implications (stack, `uncaughtException`, `async_hooks`)
 
-     original.apply(this, args)
 
-       .then(function(ret) { process.nextTick(cb, null, ret) },
 
-             function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });
 
-   }
 
-   Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));
 
-   Object.defineProperties(callbackified,
 
-                           getOwnPropertyDescriptors(original));
 
-   return callbackified;
 
- }
 
- exports.callbackify = callbackify;
 
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))
 
- /***/ }),
 
- /* 44 */
 
- /***/ (function(module, exports) {
 
- module.exports = function isBuffer(arg) {
 
-   return arg && typeof arg === 'object'
 
-     && typeof arg.copy === 'function'
 
-     && typeof arg.fill === 'function'
 
-     && typeof arg.readUInt8 === 'function';
 
- }
 
- /***/ })
 
- /******/ ]);
 
 
  |