加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
wait-for-it.sh 270.19 KB
一键复制 编辑 原始数据 按行查看 历史
niufw_qb 提交于 2022-10-10 10:06 . 增加dockerfile
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338
<!DOCTYPE html>
<html lang="en" data-color-mode="auto" data-light-theme="light" data-dark-theme="dark">
<head>
<meta charset="utf-8">
<link rel="dns-prefetch" href="https://github.githubassets.com">
<link rel="dns-prefetch" href="https://avatars.githubusercontent.com">
<link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com">
<link rel="dns-prefetch" href="https://user-images.githubusercontent.com/">
<link rel="preconnect" href="https://github.githubassets.com" crossorigin>
<link rel="preconnect" href="https://avatars.githubusercontent.com">
<link crossorigin="anonymous" media="all" integrity="sha512-E9wnWjoxQmh5A1jiWVYDPKOvA8VPf0iKQYoc+9ycMJvtAi9gOSlaUci+W2smxFIlWkV8hkX+O27S8NIB59iIDw==" rel="stylesheet" href="https://github.githubassets.com/assets/light-13dc275a3a314268790358e25956033c.css" /><link crossorigin="anonymous" media="all" integrity="sha512-nYSv3KrFhMlGUpjkFQBLMEN6HvHhijcoubQLjV3DWlcABEi2yDYf6KGUjRubJ5R+dJnKXR7jA4wu5Dg200SApA==" rel="stylesheet" href="https://github.githubassets.com/assets/dark-9d84afdcaac584c9465298e415004b30.css" /><link data-color-theme="dark_dimmed" crossorigin="anonymous" media="all" integrity="sha512-73MN8RaWLT6hOrTrxNJOEI8Pb0ArN01fXatO0tqm/qXy73XBb0FG3f8jd0NfztcQGoLTDF6Pl6AxpbnDvgwAiA==" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed-ef730df116962d3ea13ab4ebc4d24e10.css" /><link data-color-theme="dark_high_contrast" crossorigin="anonymous" media="all" integrity="sha512-bOhGZNmild3wSbSBnXK4FdlotedKfGpLBrn2ws0dSVZZaZmQcYoGvkvl1M6L82kHTBkHjonl5pIpbQ9Q066xCw==" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_high_contrast-6ce84664d9a295ddf049b4819d72b815.css" /><link data-color-theme="dark_colorblind" crossorigin="anonymous" media="all" integrity="sha512-AwOAfDuSE0kUy1kcP+UA/Gj0G3V2UahdhGF/3XKhrgH+rX5j33z3/p8INmxmpC1TF1XDDPjwJAmvCECOdgDCNw==" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind-0303807c3b92134914cb591c3fe500fc.css" /><link data-color-theme="light_colorblind" crossorigin="anonymous" media="all" integrity="sha512-MTr0RUpwD911150L11H/RfSf+jCC9M4JQt6f3rFBXTMZZop9I/2FqEUXDYYBLnTqXTel4Ost6mblHDW5IK7Q5Q==" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind-313af4454a700fdd75d79d0bd751ff45.css" /><link data-color-theme="light_high_contrast" crossorigin="anonymous" media="all" integrity="sha512-YtCQQI4gi5fOKm9+JR5jGw5IqvUk4NlWG6r0YRx3SGXtNYMNuVXlTT3X1HZczk1u9vhCYsMevrnz5FfY2lZyWg==" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_high_contrast-62d090408e208b97ce2a6f7e251e631b.css" />
<link crossorigin="anonymous" media="all" integrity="sha512-zw7LEKJYRly65tkoCHN9EKkBSW87oNvS/W1iwFRH5uw6orvEHdej1Pom9Hx20gdv+RhaXzHW/3h0QjuAlkhynQ==" rel="stylesheet" href="https://github.githubassets.com/assets/frameworks-cf0ecb10a258465cbae6d92808737d10.css" />
<link crossorigin="anonymous" media="all" integrity="sha512-ZJNZIu4m/yMHniij8/3RBZmeeOpw2TlltviwQV13ZDwe8SvkKS/UHNK/cDsfKXGXLh6sA4k5bPfXjzf2tkFBLw==" rel="stylesheet" href="https://github.githubassets.com/assets/behaviors-64935922ee26ff23079e28a3f3fdd105.css" />
<link crossorigin="anonymous" media="all" integrity="sha512-MCJFYfbQoT4EXC6aWx5Wghs8FC/jslHEeN2iWXphliccmede2dQlhIBTAUCBq9Yu5poltu4askungzvyCsycGg==" rel="stylesheet" href="https://github.githubassets.com/assets/tab-size-fix-30224561f6d0a13e045c2e9a5b1e5682.css" />
<link crossorigin="anonymous" media="all" integrity="sha512-7T6O6uwV0NwcyfF0XKwFxobnwGs2oB44PTUQiIApfMfDrna6t2EPytQ9X+U7/tOUntkBf5kXlUILnpa3/d6T+Q==" rel="stylesheet" href="https://github.githubassets.com/assets/github-ed3e8eeaec15d0dc1cc9f1745cac05c6.css" />
<script crossorigin="anonymous" defer="defer" integrity="sha512-kpMz2WTrXY4m62SKDEVfDwbCiJ46+FC6FSEM/OV7Uod3htViFQMRx8SGZhUG83Yb0CYdaVVU58DE9hi5e6xmPA==" type="application/javascript" src="https://github.githubassets.com/assets/environment-929333d9.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-+cOLzcLgBELaL5Zch/8tt7IfcY/pitJKCKlZAdwBzfkFIMxeFq0BbqpTcPr5wV/FArZA293KtrAliTS0n3O21Q==" type="application/javascript" src="https://github.githubassets.com/assets/chunk-frameworks-f9c38bcd.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-EJrMWr2CjD94vCgVfSrOYzZ+HxC7+2x71ZjtMspWDIMT3AQqjKor9CRB20G/9FEeYygdlDK2jKflbH3rqK5g/w==" type="application/javascript" src="https://github.githubassets.com/assets/chunk-vendor-109acc5a.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-4j+4tPAGF1RQZBkB2OgObLNrSbMk9Ih4IBG800KbUIRZR8ixB7XA/RFAZk4B5CMKXWt32joztWffVw17cFDufA==" type="application/javascript" src="https://github.githubassets.com/assets/behaviors-e23fb8b4.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-ODZJzCJpaOfusrIka5QVZQcPiO9LBGyrrMYjhhJWSLuCN5WbZ5xiEiiOPOKVu71dqygyRdB2TY7AKPA1J5hqdg==" type="application/javascript" data-module-id="./chunk-unveil.js" data-src="https://github.githubassets.com/assets/chunk-unveil-383649cc.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-emPgUbSwW9ezLCgRnTE7n4fbbfc/MqEEDHmnkmG61dTyjWKHTYKN4wN3OPS7SY0fwmSJ8mB5+gng2nZw4/HsUg==" type="application/javascript" data-module-id="./chunk-animate-on-scroll.js" data-src="https://github.githubassets.com/assets/chunk-animate-on-scroll-7a63e051.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-ocfEAp6AJvGh4otXKow+AVJ14ysircwHagMkRQ3hoQvuy/U9agyT1cYKYiSYph1VLNaI/aAXwVd2go1pb3DD8A==" type="application/javascript" data-module-id="./chunk-input-demux.js" data-src="https://github.githubassets.com/assets/chunk-input-demux-a1c7c402.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-tM2UlPYv6Z04ZoFXp/P+9sanpA9adLc2Y8CIfnVE7OvO0Z41BNLEyIIuxIE87D5su+5Q7HREnk5ZBKWPL8IOQg==" type="application/javascript" data-module-id="./chunk-ref-selector.js" data-src="https://github.githubassets.com/assets/chunk-ref-selector-b4cd9494.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-StzJa0ImsbE94tNopufxdylWFNXdsWvjIx7rHZMGm+cBsuqTIe/0KJaXnKB7NDBuGYX3XN55GtkSvBst/uZd1g==" type="application/javascript" data-module-id="./chunk-filter-input.js" data-src="https://github.githubassets.com/assets/chunk-filter-input-4adcc96b.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-ynV5nM8UuCr4KZ/msFeRxRL6LnG+XUKzIfh6LNIzQ21ecjLVPvm53ghTE54aIuSUaHJWHnsYg8FRzycZIcRHiA==" type="application/javascript" data-module-id="./chunk-edit.js" data-src="https://github.githubassets.com/assets/chunk-edit-ca75799c.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-MXGEZL0oVRLVvLK6wu1l5FR/EpWpezuX/jtnfpeobOo0ohJcoeNiC335/neqTQHTfK7WXDX1bURWEUy8uzJXQg==" type="application/javascript" data-module-id="./chunk-responsive-underlinenav.js" data-src="https://github.githubassets.com/assets/chunk-responsive-underlinenav-31718464.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-gmw7obKL/JEHWPp6zWFh+ynbXUFOidj1DN2aPiTDwP8Gair0moVuDmA340LD84A29I3ZPak19CEiumG+oIiseg==" type="application/javascript" data-module-id="./chunk-tag-input.js" data-src="https://github.githubassets.com/assets/chunk-tag-input-826c3ba1.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-Ao9llFIlj54ApuKf2QLboXukbu2h7MHfMmtYHrrsVe1lprKNLiA0usVcRpvruKhfT5STDuWm/GGmyx8ox27hWQ==" type="application/javascript" data-module-id="./chunk-notification-list-focus.js" data-src="https://github.githubassets.com/assets/chunk-notification-list-focus-028f6594.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-SPWd3rzrxmU6xW6vy1JPWCd+3uWFWmnd0MVGpmw/TpHWUAdLWDqL8kWyC/sBIZJmda4mTtUO1DHJQzAXRSrC+g==" type="application/javascript" data-module-id="./chunk-cookies.js" data-src="https://github.githubassets.com/assets/chunk-cookies-48f59dde.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-hjey7b0+UFZG85cw5+e+8/fHY3YiTdErWMpFZNpvEATl87TyXDWIAeQpK+KYZgGojs9Df161zUjYHzoDK8qndA==" type="application/javascript" data-module-id="./chunk-async-export.js" data-src="https://github.githubassets.com/assets/chunk-async-export-8637b2ed.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-tw9SApiMkftVBYeb6/VGhEwGNw8tlyBhXc9RVXH4UbCD6u+48uuCMvXf3bxvBdOld0OoYg83SnD2mgJWhdaTiQ==" type="application/javascript" data-module-id="./chunk-premium-runners.js" data-src="https://github.githubassets.com/assets/chunk-premium-runners-b70f5202.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-wCg/G4Q1mgx/gbFVTXch0J8aGE7YGVjE9172v1PS2nYv6uplggTSJkx635qBkztNlBdgdjlOMZWRxjDxafSPRw==" type="application/javascript" data-module-id="./chunk-get-repo-element.js" data-src="https://github.githubassets.com/assets/chunk-get-repo-element-c0283f1b.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-Oy6lTk/9YwO2U8Aku66U9f0Po+r4dKJ5JEXY1N9LJzUldCPUAk9eJYBa+fIQEuUDsO51u8Y90SCzaH414vZVMw==" type="application/javascript" data-module-id="./chunk-prefetched-provider.js" data-src="https://github.githubassets.com/assets/chunk-prefetched-provider-3b2ea54e.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-xhSAO0KtnFAlRqAK+mg8BPj/J334ccvnCmmjmBQBCgZcsoO9teHJSS6oAn3XOWYFsWPU2JehwG7S3OVEbLwdUg==" type="application/javascript" data-module-id="./chunk-color-modes.js" data-src="https://github.githubassets.com/assets/chunk-color-modes-c614803b.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-jitxouuFY6SUcDZV5W3jhadVEIfFBfCQZxfPV3kxNnsWEBzbxMJFp0ccLb7+OlBjSs1zU/MNtuOV6T9Ay7lx4w==" type="application/javascript" data-module-id="./chunk-copy.js" data-src="https://github.githubassets.com/assets/chunk-copy-8e2b71a2.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-gwuBCPcczyGD5IyVEn/uqJXvT07GaVMryQC+ZfDhViO9r2JaqeAc4ooM3cVSjqo4m3IK6Y+boPI8MSf4mLlAgQ==" type="application/javascript" data-module-id="./chunk-voting.js" data-src="https://github.githubassets.com/assets/chunk-voting-830b8108.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-HDsLJf6gAN+WDFaJneJwmIY82XkZKWqeX7tStBLRh1XM53K8vMV6JZvjq/UQXszaNVWxWcuYtgYTG6ZWo8+QSw==" type="application/javascript" data-module-id="./chunk-confetti.js" data-src="https://github.githubassets.com/assets/chunk-confetti-1c3b0b25.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-vAs99bZfAF+pQjzGYSEM/dzYwm4SIxUxrcjdLuatAV6WJu/kfw8+s/SO7In/gHFhCR08sl7a38vA+dDmYAYHyQ==" type="application/javascript" data-module-id="./chunk-codemirror.js" data-src="https://github.githubassets.com/assets/chunk-codemirror-bc0b3df5.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-Gr3ZcJt5t73JeBM3NwOEziKyDZ3HpHwzqZL/c1pgTUfo+6QC5f88XXRw/RT6X2diwqvaa3OVFh0oWsZ9ZxhtdQ==" type="application/javascript" data-module-id="./chunk-tip.js" data-src="https://github.githubassets.com/assets/chunk-tip-1abdd970.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-EdQvlnI4Pu5Q6K0HCvp+mi0Vw9ZuwaEuhbnCbmFKX+c0xwiUWY0L3n9P0F6doLhaHhfpvW3718+miL11WG4BeA==" type="application/javascript" data-module-id="./chunk-line.js" data-src="https://github.githubassets.com/assets/chunk-line-11d42f96.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-4zSHP2sQXPKoN9jFy8q2ThHsQNej8s4qhubSR4g0/2dTexAEnoTG+RbaffdIhmjfghGjpS/DlE0cdSTFEOcipQ==" type="application/javascript" data-module-id="./chunk-array.js" data-src="https://github.githubassets.com/assets/chunk-array-e334873f.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-g8fb6U7h9SkWgiK69nfNMn4aN5D2YBYPZUbCIuLpemWoOw8NOaZY8Z0hPq4RUVs4+bYdCFR6K719k8lwFeUijg==" type="application/javascript" data-module-id="./chunk-band.js" data-src="https://github.githubassets.com/assets/chunk-band-83c7dbe9.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-4GJz2wyWwjq7P4hyx3qSkjvnTO7RG5cWvnePVXPB+Oji6MBVugAdl7kCTKbpX8+Ae2ONvGJwFzSc9A7m1pqzXw==" type="application/javascript" data-module-id="./chunk-toast.js" data-src="https://github.githubassets.com/assets/chunk-toast-e06273db.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-miaiZ1xkDsWBUsURHOmeYtbgVKQGnm1octCo/lDXUmPzDyjtubnHULRVw1AK+sttwdwyB0+LOyhIVAWCNSGx+A==" type="application/javascript" data-module-id="./chunk-delayed-loading-element.js" data-src="https://github.githubassets.com/assets/chunk-delayed-loading-element-9a26a267.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-GD25CNhMGDMzEmeFhUT0FILBupAkx5/CHohnYXOP1togy40O0iu/lASaSp3gV8ue0nwscalJVQqR5gKDRHHDVg==" type="application/javascript" data-module-id="./chunk-three.module.js" data-src="https://github.githubassets.com/assets/chunk-three.module-183db908.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-KZTKdFg9JyLQOyKdb4KuuAfbJ9ujPPJPbt9P8/IERFXBqLOcXBp4+sEN4SWRG3tU5X8mYrH4GaFY2A9LVzZLTg==" type="application/javascript" data-module-id="./chunk-invitations.js" data-src="https://github.githubassets.com/assets/chunk-invitations-2994ca74.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-vFR+IqThljOLrAWmjhOL/kiQrjgZZg95uPovX0J7kRH5p7Y049LDRZaXLMDijfeqqk71d3MMn9XP5bUcH+lB9w==" type="application/javascript" data-module-id="./chunk-profile.js" data-src="https://github.githubassets.com/assets/chunk-profile-bc547e22.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-W3TFrSn3Iqu38aVxxYxFiNGzaVmLXtGfwRDVRH1RwRvqPVerX1fjQPEYag+HqAoWaGy5ssVFp42oyOIV93afBw==" type="application/javascript" data-module-id="./chunk-overview.js" data-src="https://github.githubassets.com/assets/chunk-overview-5b74c5ad.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-pTTrav4l7gbsAu4I8D/EeswJmvjNoSDQG+m8IxXwFHEZ1guasobEmCNB3H5gy9brild3bKp5LqpoPzwx631/rA==" type="application/javascript" data-module-id="./chunk-advanced.js" data-src="https://github.githubassets.com/assets/chunk-advanced-a534eb6a.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-6Rmd0BBAsJ9ouvb/pgrkToMPs5ogcqi8rcQ7R3GDPPHIjlu0NZ0Bx6HUn/aOruMCECETHm4Exfs5gjYdHs66RQ==" type="application/javascript" data-module-id="./chunk-runner-groups.js" data-src="https://github.githubassets.com/assets/chunk-runner-groups-e9199dd0.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-5H5N/3G/20nmVKntphXb9z0H9q3URFDmHSccLhFkMSA8ILAA9mYlRKCWAWoDcl/W437jtGw1tIxjWStfInvidw==" type="application/javascript" data-module-id="./chunk-profile-pins-element.js" data-src="https://github.githubassets.com/assets/chunk-profile-pins-element-e47e4dff.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-6WJL+zyYirKxwD8MNBenuxbMKvCeskXBrXISNlqhV3kltmI8kiSjUX0nDQM3fXeSakcll12sYS8Pli1GFPtG9Q==" type="application/javascript" data-module-id="./chunk-emoji-picker-element.js" data-src="https://github.githubassets.com/assets/chunk-emoji-picker-element-e9624bfb.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-EvJ2Fip59DXgARNuwTWgjdVqoCjhXQL73SP9yexijlWStKq92sfbKeGK5R4wIP0QOr39WsnW/Kaw3Wpl1QPfog==" type="application/javascript" data-module-id="./chunk-edit-hook-secret-element.js" data-src="https://github.githubassets.com/assets/chunk-edit-hook-secret-element-12f27616.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-91JzWtpBUoC7Z4dQpeXRegjwCMooGPFtg/vXxaIGVTxguoOcI/hEdyM7otQGRNQmMencK71thI0oGt11Wgfrww==" type="application/javascript" data-module-id="./chunk-insights-query.js" data-src="https://github.githubassets.com/assets/chunk-insights-query-f752735a.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-ySdUENYEBMcTMRqhu0hVPVoUQfqjCkRuNy9wtKP3bEcYkMVYCSfEK4HJUTbuu3r4R7b9i6cGRHh8O3fA2/Jqyw==" type="application/javascript" data-module-id="./chunk-remote-clipboard-copy.js" data-src="https://github.githubassets.com/assets/chunk-remote-clipboard-copy-c9275410.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-eO/r0W5ywI2kxVkcH8yquw3n5Gh+cA8lVOgxd+ecgJYU81FB4Q5FqFxgHhx1omigPwexB4ltwXBMDhSeW6qNeQ==" type="application/javascript" data-module-id="./chunk-series-table.js" data-src="https://github.githubassets.com/assets/chunk-series-table-78efebd1.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-eCSMVL1aAfhWSme4/3seObqN3HNdkxWVKaAX5bmZmxIXZdv0ixnuFJeESYdLeMED/wQETtQ971A03mLF3ZX8eQ==" type="application/javascript" data-module-id="./chunk-line-chart.js" data-src="https://github.githubassets.com/assets/chunk-line-chart-78248c54.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-rZhcZvsxbGBxibYeNv4aHYZkgZzW6xnRcAqmuOCbq/ehJgr75pxgiV7HrGrYrX9HNmyH8T+90HC9WSBZNM4L3g==" type="application/javascript" data-module-id="./chunk-bar-chart.js" data-src="https://github.githubassets.com/assets/chunk-bar-chart-ad985c66.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-/QP5yDdYoor56F2+SyPr/8a9FtvCZnnGP0d+lSAHQR5n+xYjaiY6LjJGB/x1cevAH8r4XY/axNN9fRWIfbwAcA==" type="application/javascript" data-module-id="./chunk-stacked-area-chart.js" data-src="https://github.githubassets.com/assets/chunk-stacked-area-chart-fd03f9c8.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-3Z8SrZGDj5Zn0mxw+2TebgdD8qZ5VMBhjLLWWN9omTCO/jJm0qwzEq1X1WCiiRNsUdMTsdidQjAydXroWhJ/jw==" type="application/javascript" data-module-id="./chunk-presence-avatars.js" data-src="https://github.githubassets.com/assets/chunk-presence-avatars-dd9f12ad.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-MM4pnf2QNKa1zT7uRJuREbRqdt+VJpGXqIzROWMu/Nb4GySJcZagN8mmcIX4fKGBL1B5SilZ7M8BbkEFO3I+0g==" type="application/javascript" data-module-id="./chunk-pulse-authors-graph-element.js" data-src="https://github.githubassets.com/assets/chunk-pulse-authors-graph-element-30ce299d.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-aNAcFMlIdG1ocY5LnZylnN/6KXiJxyPvKg7y1Jnai732wdnrjXazcvNiQkRnj5FY8WP6JRa3K4doCReA4nhj7w==" type="application/javascript" data-module-id="./chunk-stacks-input-config-view.js" data-src="https://github.githubassets.com/assets/chunk-stacks-input-config-view-68d01c14.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-kbG4tp4Eb0D31U2Z8EaqzgxQQ1kUOOXU6Evcw29Nw/gTlFp+YfQSbyx45jV2gopBJ+EYVoNSwIHWKiYkobp35A==" type="application/javascript" data-module-id="./chunk-community-contributions.js" data-src="https://github.githubassets.com/assets/chunk-community-contributions-91b1b8b6.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-Ln+QCbuZ/R66lYDA/uV46yzWS3x4BcV6HmIHSucbDnhog/t5DZuSyZ4o8dV1g3XQb+c0FmTH9w9m9p4vTDPLEg==" type="application/javascript" data-module-id="./chunk-discussion-page-views.js" data-src="https://github.githubassets.com/assets/chunk-discussion-page-views-2e7f9009.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-gQ7BRqwcQBw8KL17yph8nQRZcDFj+oGkYkzEutQzuMADVxJWqUABJOgXBd9yz6XW1NdOaL1xmWOx00zda2UqGw==" type="application/javascript" data-module-id="./chunk-discussions-daily-contributors.js" data-src="https://github.githubassets.com/assets/chunk-discussions-daily-contributors-810ec146.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-U+lpbTsRbrZovXZmkkmyw9uU6C5g1b8BoN6Mq7BAhlHT6znG2QPlrHo7sBQrOCn/A3nhHOAvm2o/MhXDvPMUuw==" type="application/javascript" data-module-id="./chunk-discussions-new-contributors.js" data-src="https://github.githubassets.com/assets/chunk-discussions-new-contributors-53e9696d.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-TLQillrC8dagau7Smjy8GmWx3jhSvBCnkTPMStBL7tvLAaowBuGx38ICPFBdM+3ammiRlfXAaEe5OdpimWnnmQ==" type="application/javascript" data-module-id="./chunk-tweetsodium.js" data-src="https://github.githubassets.com/assets/chunk-tweetsodium-4cb42296.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-eHSwjhwcxnPBWzrxiC7rQ53wHZETtJQTXUqb6WPdetPBeznP2kqRbmlyCcMXCIrqxGXpzY34wFs8/rWHYjNLFw==" type="application/javascript" data-module-id="./chunk-jump-to.js" data-src="https://github.githubassets.com/assets/chunk-jump-to-7874b08e.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-jy/4bFk4EK3EzC+5m6JZNLLUew8SvtjCDsucaAkcxaen76e74RNAUKtt7OtC9lgshTpB8/J0VFeogLaaoQOPaA==" type="application/javascript" data-module-id="./chunk-user-status-submit.js" data-src="https://github.githubassets.com/assets/chunk-user-status-submit-8f2ff86c.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-L2jxBDS9QAN9O1qn7LqMcs0YJn/gF6xW73zSbWPRlVCEnG05dexaoJWkAG6RqALTnXLsj2GTUKnba6DATR828g==" type="application/javascript" data-module-id="./chunk-launch-code-element.js" data-src="https://github.githubassets.com/assets/chunk-launch-code-element-2f68f104.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-cvjyIYhR2ZkuFAXHYZSjPTc5wXYOdISgqbXw69CXpDXdxffXmXuzjCcGJNVk3mDNYsVH4Q9sb2UMNPFrNxxRUQ==" type="application/javascript" data-module-id="./chunk-metric-selection-element.js" data-src="https://github.githubassets.com/assets/chunk-metric-selection-element-72f8f221.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-/2Oeznu4Qh8QuYb4OvlxCrx/tIfHWnJrhjNFW7MOl0nRMSVUPowbUJ4F+HpdkepXw/OZkF22CN7CN1dRv8bJmQ==" type="application/javascript" data-module-id="./chunk-severity-calculator-element.js" data-src="https://github.githubassets.com/assets/chunk-severity-calculator-element-ff639ece.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-qyKiiHoQgmZhPRV7QexCydpjeAl9ryNe0g8r+9eaXogC2a6R4iOXRVZvJLv0rDwACJHhba6t/FFm67Q/5vXypA==" type="application/javascript" data-module-id="./chunk-command-palette-page-element.js" data-src="https://github.githubassets.com/assets/chunk-command-palette-page-element-ab22a288.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-7tuVhi/5l3tU55d+BrN6T/sfSnp/K+AOJxNIaiqjsSndTpU/V/z7+nBgEbCtZqiJoTv0DAQvYiVYbT0RsYiYPg==" type="application/javascript" data-module-id="./chunk-command-palette-page-stack-element.js" data-src="https://github.githubassets.com/assets/chunk-command-palette-page-stack-element-eedb9586.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-yXHkwiNZgB6O0iSDKE8jrZzTtTyF8YdFFXHcemhWEPuN3sWs1PQrSwEh0Gw4/B9TIzUfvogbqlJ71yLLuqyM+Q==" type="application/javascript" data-module-id="./chunk-readme-toc-element.js" data-src="https://github.githubassets.com/assets/chunk-readme-toc-element-c971e4c2.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-aGaoVKNIqNkSpelOnfn0UCDbQLW2XBUVVkOOgVZXFNDfgJgFQNMXALc0964DwIi9kYrkYQIShePOSMFo20hHkw==" type="application/javascript" data-module-id="./chunk-feature-callout-element.js" data-src="https://github.githubassets.com/assets/chunk-feature-callout-element-6866a854.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-qNDdxgftImxudCMmfMmcxMBXvelYxSupLrG9ehwER1lFAGR6AND7oYQV5AwDd6+ebC75Pag2r8vRkMpZMuicPA==" type="application/javascript" data-module-id="./chunk-codespaces-policy-form-element.js" data-src="https://github.githubassets.com/assets/chunk-codespaces-policy-form-element-a8d0ddc6.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-+aCVCMGHjL+zXInuzIJ4VEykZcUNHS0rSsd1wj/21i2qS3C3J3ErL/8hYR8E+j9+qIRzpyJyKTYlCgajVbFL3g==" type="application/javascript" data-module-id="./chunk-action-list-element.js" data-src="https://github.githubassets.com/assets/chunk-action-list-element-f9a09508.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-MIJV83XLkjlcln6mu7u+tcsqh6pQ/tvgAwB0SWaoE/CudwHW2PfC9SB2/gGde1iBpEZxtRzjtrQWTP+FTPpbRw==" type="application/javascript" data-module-id="./chunk-memex-project-picker-element.js" data-src="https://github.githubassets.com/assets/chunk-memex-project-picker-element-308255f3.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-ooYcnNLBDnMePhMvdQEQiItFZowYg4gwklGZGCrAWPW1LCxePPkzB1kr8U3Bay0NPKYEDmICeXBqqDPd8EDmqA==" type="application/javascript" data-module-id="./chunk-project-picker-element.js" data-src="https://github.githubassets.com/assets/chunk-project-picker-element-a2861c9c.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-YYzSijUU1oA10iMuvfzSHMK7vrQzu8aiLpIfD13kpcq2KVMqdOrIASINY5sBUNPNFZbSLKmBfTcEXEKVcQZHfQ==" type="application/javascript" data-module-id="./chunk-sortable-behavior.js" data-src="https://github.githubassets.com/assets/chunk-sortable-behavior-618cd28a.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-6JUQHgkTqBaCCdDugMcO4fQ8YxUHk+m6rwVp2Wxa4FMVz6BbBMPOzGluT4wBq8NTUcFv6DnXSOnt5e85jNgpGg==" type="application/javascript" data-module-id="./chunk-drag-drop.js" data-src="https://github.githubassets.com/assets/chunk-drag-drop-e895101e.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-3W46fSBMvt8hnBUTSCHAAPbt4DHI5VXdI2qT0YMyv8sco5NvjmGHp2M0OlTNxepPEOb8LCplxxzCwrgMubsIug==" type="application/javascript" data-module-id="./chunk-contributions-spider-graph.js" data-src="https://github.githubassets.com/assets/chunk-contributions-spider-graph-dd6e3a7d.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-VQRofBwNZhBa4vBuw0P5bjjlVtO2R+l1M0TOfMZHX1bB7xy//CFwqmyaL24rLfgLx8sahKZ7eEw1o+nkFoUzNA==" type="application/javascript" data-module-id="./chunk-webgl-warp.js" data-src="https://github.githubassets.com/assets/chunk-webgl-warp-5504687c.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-5hd76BdyEBqN1fqF0tl/x8U+vJYYel4AapBR/mrSoL0nj/XeQ0ZAuao4ZhT/fwK5MRh9JCqAy/K8t1zC300z1Q==" type="application/javascript" src="https://github.githubassets.com/assets/repositories-e6177be8.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-pDBBGH25A6rLM8HA1RYpQGDVLWm15+tu7JZG2SBanj4RtVYysnCQVhqkhMxslZVkwTtPxq1tOQy737m7RSMK9w==" type="application/javascript" src="https://github.githubassets.com/assets/diffs-a4304118.js"></script>
<meta name="viewport" content="width=device-width">
<title>wait-for-it/wait-for-it.sh at master · vishnubob/wait-for-it</title>
<meta name="description" content="Pure bash script to test and wait on the availability of a TCP host and port - wait-for-it/wait-for-it.sh at master · vishnubob/wait-for-it">
<link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub">
<link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub">
<meta property="fb:app_id" content="1401488693436528">
<meta name="apple-itunes-app" content="app-id=1477376905" />
<meta name="twitter:image:src" content="https://opengraph.githubassets.com/b5994e0f4e7f1d41227161550082a226e5c0cc6af8afd6e712be997511e10a70/vishnubob/wait-for-it" /><meta name="twitter:site" content="@github" /><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:title" content="wait-for-it/wait-for-it.sh at master · vishnubob/wait-for-it" /><meta name="twitter:description" content="Pure bash script to test and wait on the availability of a TCP host and port - wait-for-it/wait-for-it.sh at master · vishnubob/wait-for-it" />
<meta property="og:image" content="https://opengraph.githubassets.com/b5994e0f4e7f1d41227161550082a226e5c0cc6af8afd6e712be997511e10a70/vishnubob/wait-for-it" /><meta property="og:image:alt" content="Pure bash script to test and wait on the availability of a TCP host and port - wait-for-it/wait-for-it.sh at master · vishnubob/wait-for-it" /><meta property="og:image:width" content="1200" /><meta property="og:image:height" content="600" /><meta property="og:site_name" content="GitHub" /><meta property="og:type" content="object" /><meta property="og:title" content="wait-for-it/wait-for-it.sh at master · vishnubob/wait-for-it" /><meta property="og:url" content="https://github.com/vishnubob/wait-for-it" /><meta property="og:description" content="Pure bash script to test and wait on the availability of a TCP host and port - wait-for-it/wait-for-it.sh at master · vishnubob/wait-for-it" />
<link rel="assets" href="https://github.githubassets.com/">
<link rel="shared-web-socket" href="wss://alive.github.com/_sockets/u/12984401/ws?session=eyJ2IjoiVjMiLCJ1IjoxMjk4NDQwMSwicyI6NzkwMjg0NDUzLCJjIjo0Mjc0NTUxMDE5LCJ0IjoxNjQyMDYzOTg0fQ==--15410092458ccfb7fd9ee7311213f8f7cc0bee33ab13bf2b48591b0b51aec40e" data-refresh-url="/_alive" data-session-id="b4d99bbeee8ace928bee3cbd7bb311420bc3f84532a4772b091f1f27f3277725">
<link rel="shared-web-socket-src" href="/assets-cdn/worker/socket-worker-9c817d86.js">
<link rel="sudo-modal" href="/sessions/sudo_modal">
<meta name="request-id" content="3D4E:7535:11F1137:227614F:61DFE86F" data-pjax-transient="true" /><meta name="html-safe-nonce" content="89842f3c74cf1f199a2e9094491c06fd3c09d9b68964e6b7cd71cf3d401c122f" data-pjax-transient="true" /><meta name="visitor-payload" content="eyJyZWZlcnJlciI6Imh0dHBzOi8vZ2l0aHViLmNvbS92aXNobnVib2Ivd2FpdC1mb3ItaXQiLCJyZXF1ZXN0X2lkIjoiM0Q0RTo3NTM1OjExRjExMzc6MjI3NjE0Rjo2MURGRTg2RiIsInZpc2l0b3JfaWQiOiIxMTA5OTM3ODUxNDc5MTY2ODI5IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0=" data-pjax-transient="true" /><meta name="visitor-hmac" content="ca8312fc799b89e5ab908da3d3984a9a75ecde6504d5d030ef89509a8158ddb3" data-pjax-transient="true" />
<meta name="hovercard-subject-tag" content="repository:50936918" data-pjax-transient>
<meta name="github-keyboard-shortcuts" content="repository,source-code" data-pjax-transient="true" />
<meta name="selected-link" value="repo_source" data-pjax-transient>
<meta name="google-site-verification" content="c1kuD-K2HIVF635lypcsWPoD4kilo5-jA_wBFyT4uMY">
<meta name="google-site-verification" content="KT5gs8h0wvaagLKAVWq8bbeNwnZZK1r1XQysX3xurLU">
<meta name="google-site-verification" content="ZzhVyEFwb7w3e0-uOTltm8Jsck2F5StVihD0exw2fsA">
<meta name="google-site-verification" content="GXs5KoUUkNCoaAZn7wPN-t01Pywp9M3sEjnt_3_ZWPc">
<meta name="octolytics-url" content="https://collector.githubapp.com/github/collect" /><meta name="octolytics-actor-id" content="12984401" /><meta name="octolytics-actor-login" content="niufwshd" /><meta name="octolytics-actor-hash" content="bfe5ab311a7552b8f5410d1c7bbcd5cbd7bb4d34eda177f5683b9f99792e3e22" />
<meta name="analytics-location" content="/&lt;user-name&gt;/&lt;repo-name&gt;/blob/show" data-pjax-transient="true" />
<meta name="optimizely-datafile" content="{&quot;version&quot;: &quot;4&quot;, &quot;rollouts&quot;: [], &quot;typedAudiences&quot;: [], &quot;anonymizeIP&quot;: true, &quot;projectId&quot;: &quot;16737760170&quot;, &quot;variables&quot;: [], &quot;featureFlags&quot;: [], &quot;experiments&quot;: [{&quot;status&quot;: &quot;Running&quot;, &quot;audienceIds&quot;: [], &quot;variations&quot;: [{&quot;variables&quot;: [], &quot;id&quot;: &quot;20438636352&quot;, &quot;key&quot;: &quot;control&quot;}, {&quot;variables&quot;: [], &quot;id&quot;: &quot;20484957397&quot;, &quot;key&quot;: &quot;treatment&quot;}], &quot;id&quot;: &quot;20479227424&quot;, &quot;key&quot;: &quot;growth_ghec_onboarding_experience&quot;, &quot;layerId&quot;: &quot;20467848595&quot;, &quot;trafficAllocation&quot;: [{&quot;entityId&quot;: &quot;20484957397&quot;, &quot;endOfRange&quot;: 1000}, {&quot;entityId&quot;: &quot;20484957397&quot;, &quot;endOfRange&quot;: 3000}, {&quot;entityId&quot;: &quot;20484957397&quot;, &quot;endOfRange&quot;: 5000}, {&quot;entityId&quot;: &quot;20484957397&quot;, &quot;endOfRange&quot;: 6000}, {&quot;entityId&quot;: &quot;20484957397&quot;, &quot;endOfRange&quot;: 8000}, {&quot;entityId&quot;: &quot;20484957397&quot;, &quot;endOfRange&quot;: 10000}], &quot;forcedVariations&quot;: {&quot;85e2238ce2b9074907d7a3d91d6feeae&quot;: &quot;control&quot;}}, {&quot;status&quot;: &quot;Running&quot;, &quot;audienceIds&quot;: [], &quot;variations&quot;: [{&quot;variables&quot;: [], &quot;id&quot;: &quot;20667381018&quot;, &quot;key&quot;: &quot;control&quot;}, {&quot;variables&quot;: [], &quot;id&quot;: &quot;20680930759&quot;, &quot;key&quot;: &quot;treatment&quot;}], &quot;id&quot;: &quot;20652570897&quot;, &quot;key&quot;: &quot;project_genesis&quot;, &quot;layerId&quot;: &quot;20672300363&quot;, &quot;trafficAllocation&quot;: [{&quot;entityId&quot;: &quot;20667381018&quot;, &quot;endOfRange&quot;: 5000}, {&quot;entityId&quot;: &quot;20680930759&quot;, &quot;endOfRange&quot;: 10000}], &quot;forcedVariations&quot;: {&quot;83356e17066d336d1803024138ecb683&quot;: &quot;treatment&quot;, &quot;18e31c8a9b2271332466133162a4aa0d&quot;: &quot;treatment&quot;, &quot;10f8ab3fbc5ebe989a36a05f79d48f32&quot;: &quot;treatment&quot;, &quot;1686089f6d540cd2deeaec60ee43ecf7&quot;: &quot;treatment&quot;}}], &quot;audiences&quot;: [{&quot;conditions&quot;: &quot;[\&quot;or\&quot;, {\&quot;match\&quot;: \&quot;exact\&quot;, \&quot;name\&quot;: \&quot;$opt_dummy_attribute\&quot;, \&quot;type\&quot;: \&quot;custom_attribute\&quot;, \&quot;value\&quot;: \&quot;$opt_dummy_value\&quot;}]&quot;, &quot;id&quot;: &quot;$opt_dummy_audience&quot;, &quot;name&quot;: &quot;Optimizely-Generated Audience for Backwards Compatibility&quot;}], &quot;groups&quot;: [], &quot;sdkKey&quot;: &quot;WTc6awnGuYDdG98CYRban&quot;, &quot;environmentKey&quot;: &quot;production&quot;, &quot;attributes&quot;: [{&quot;id&quot;: &quot;16822470375&quot;, &quot;key&quot;: &quot;user_id&quot;}, {&quot;id&quot;: &quot;17143601254&quot;, &quot;key&quot;: &quot;spammy&quot;}, {&quot;id&quot;: &quot;18175660309&quot;, &quot;key&quot;: &quot;organization_plan&quot;}, {&quot;id&quot;: &quot;18813001570&quot;, &quot;key&quot;: &quot;is_logged_in&quot;}, {&quot;id&quot;: &quot;19073851829&quot;, &quot;key&quot;: &quot;geo&quot;}, {&quot;id&quot;: &quot;20175462351&quot;, &quot;key&quot;: &quot;requestedCurrency&quot;}, {&quot;id&quot;: &quot;20785470195&quot;, &quot;key&quot;: &quot;country_code&quot;}], &quot;botFiltering&quot;: false, &quot;accountId&quot;: &quot;16737760170&quot;, &quot;events&quot;: [{&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;17911811441&quot;, &quot;key&quot;: &quot;hydro_click.dashboard.teacher_toolbox_cta&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18124116703&quot;, &quot;key&quot;: &quot;submit.organizations.complete_sign_up&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18145892387&quot;, &quot;key&quot;: &quot;no_metric.tracked_outside_of_optimizely&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18178755568&quot;, &quot;key&quot;: &quot;click.org_onboarding_checklist.add_repo&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18180553241&quot;, &quot;key&quot;: &quot;submit.repository_imports.create&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18186103728&quot;, &quot;key&quot;: &quot;click.help.learn_more_about_repository_creation&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18188530140&quot;, &quot;key&quot;: &quot;test_event.do_not_use_in_production&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18191963644&quot;, &quot;key&quot;: &quot;click.empty_org_repo_cta.transfer_repository&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18195612788&quot;, &quot;key&quot;: &quot;click.empty_org_repo_cta.import_repository&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18210945499&quot;, &quot;key&quot;: &quot;click.org_onboarding_checklist.invite_members&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18211063248&quot;, &quot;key&quot;: &quot;click.empty_org_repo_cta.create_repository&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18215721889&quot;, &quot;key&quot;: &quot;click.org_onboarding_checklist.update_profile&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18224360785&quot;, &quot;key&quot;: &quot;click.org_onboarding_checklist.dismiss&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18234832286&quot;, &quot;key&quot;: &quot;submit.organization_activation.complete&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18252392383&quot;, &quot;key&quot;: &quot;submit.org_repository.create&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18257551537&quot;, &quot;key&quot;: &quot;submit.org_member_invitation.create&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18259522260&quot;, &quot;key&quot;: &quot;submit.organization_profile.update&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18564603625&quot;, &quot;key&quot;: &quot;view.classroom_select_organization&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18568612016&quot;, &quot;key&quot;: &quot;click.classroom_sign_in_click&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18572592540&quot;, &quot;key&quot;: &quot;view.classroom_name&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18574203855&quot;, &quot;key&quot;: &quot;click.classroom_create_organization&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18582053415&quot;, &quot;key&quot;: &quot;click.classroom_select_organization&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18589463420&quot;, &quot;key&quot;: &quot;click.classroom_create_classroom&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18591323364&quot;, &quot;key&quot;: &quot;click.classroom_create_first_classroom&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18591652321&quot;, &quot;key&quot;: &quot;click.classroom_grant_access&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18607131425&quot;, &quot;key&quot;: &quot;view.classroom_creation&quot;}, {&quot;experimentIds&quot;: [&quot;20479227424&quot;], &quot;id&quot;: &quot;18831680583&quot;, &quot;key&quot;: &quot;upgrade_account_plan&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19064064515&quot;, &quot;key&quot;: &quot;click.signup&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19075373687&quot;, &quot;key&quot;: &quot;click.view_account_billing_page&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19077355841&quot;, &quot;key&quot;: &quot;click.dismiss_signup_prompt&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19079713938&quot;, &quot;key&quot;: &quot;click.contact_sales&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19120963070&quot;, &quot;key&quot;: &quot;click.compare_account_plans&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19151690317&quot;, &quot;key&quot;: &quot;click.upgrade_account_cta&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19424193129&quot;, &quot;key&quot;: &quot;click.open_account_switcher&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19520330825&quot;, &quot;key&quot;: &quot;click.visit_account_profile&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19540970635&quot;, &quot;key&quot;: &quot;click.switch_account_context&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19730198868&quot;, &quot;key&quot;: &quot;submit.homepage_signup&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19820830627&quot;, &quot;key&quot;: &quot;click.homepage_signup&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19988571001&quot;, &quot;key&quot;: &quot;click.create_enterprise_trial&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20036538294&quot;, &quot;key&quot;: &quot;click.create_organization_team&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20040653299&quot;, &quot;key&quot;: &quot;click.input_enterprise_trial_form&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20062030003&quot;, &quot;key&quot;: &quot;click.continue_with_team&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20068947153&quot;, &quot;key&quot;: &quot;click.create_organization_free&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20086636658&quot;, &quot;key&quot;: &quot;click.signup_continue.username&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20091648988&quot;, &quot;key&quot;: &quot;click.signup_continue.create_account&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20103637615&quot;, &quot;key&quot;: &quot;click.signup_continue.email&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20111574253&quot;, &quot;key&quot;: &quot;click.signup_continue.password&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20120044111&quot;, &quot;key&quot;: &quot;view.pricing_page&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20152062109&quot;, &quot;key&quot;: &quot;submit.create_account&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20165800992&quot;, &quot;key&quot;: &quot;submit.upgrade_payment_form&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20171520319&quot;, &quot;key&quot;: &quot;submit.create_organization&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20222645674&quot;, &quot;key&quot;: &quot;click.recommended_plan_in_signup.discuss_your_needs&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20227443657&quot;, &quot;key&quot;: &quot;submit.verify_primary_user_email&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20234607160&quot;, &quot;key&quot;: &quot;click.recommended_plan_in_signup.try_enterprise&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20238175784&quot;, &quot;key&quot;: &quot;click.recommended_plan_in_signup.team&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20239847212&quot;, &quot;key&quot;: &quot;click.recommended_plan_in_signup.continue_free&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20251097193&quot;, &quot;key&quot;: &quot;recommended_plan&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20438619534&quot;, &quot;key&quot;: &quot;click.pricing_calculator.1_member&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20456699683&quot;, &quot;key&quot;: &quot;click.pricing_calculator.15_members&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20467868331&quot;, &quot;key&quot;: &quot;click.pricing_calculator.10_members&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20476267432&quot;, &quot;key&quot;: &quot;click.trial_days_remaining&quot;}, {&quot;experimentIds&quot;: [&quot;20479227424&quot;], &quot;id&quot;: &quot;20476357660&quot;, &quot;key&quot;: &quot;click.discover_feature&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20479287901&quot;, &quot;key&quot;: &quot;click.pricing_calculator.custom_members&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20481107083&quot;, &quot;key&quot;: &quot;click.recommended_plan_in_signup.apply_teacher_benefits&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20483089392&quot;, &quot;key&quot;: &quot;click.pricing_calculator.5_members&quot;}, {&quot;experimentIds&quot;: [&quot;20479227424&quot;, &quot;20652570897&quot;], &quot;id&quot;: &quot;20484283944&quot;, &quot;key&quot;: &quot;click.onboarding_task&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20484996281&quot;, &quot;key&quot;: &quot;click.recommended_plan_in_signup.apply_student_benefits&quot;}, {&quot;experimentIds&quot;: [&quot;20479227424&quot;], &quot;id&quot;: &quot;20486713726&quot;, &quot;key&quot;: &quot;click.onboarding_task_breadcrumb&quot;}, {&quot;experimentIds&quot;: [&quot;20479227424&quot;], &quot;id&quot;: &quot;20490791319&quot;, &quot;key&quot;: &quot;click.upgrade_to_enterprise&quot;}, {&quot;experimentIds&quot;: [&quot;20479227424&quot;], &quot;id&quot;: &quot;20491786766&quot;, &quot;key&quot;: &quot;click.talk_to_us&quot;}, {&quot;experimentIds&quot;: [&quot;20479227424&quot;], &quot;id&quot;: &quot;20494144087&quot;, &quot;key&quot;: &quot;click.dismiss_enterprise_trial&quot;}, {&quot;experimentIds&quot;: [&quot;20479227424&quot;, &quot;20652570897&quot;], &quot;id&quot;: &quot;20499722759&quot;, &quot;key&quot;: &quot;completed_all_tasks&quot;}, {&quot;experimentIds&quot;: [&quot;20479227424&quot;, &quot;20652570897&quot;], &quot;id&quot;: &quot;20500710104&quot;, &quot;key&quot;: &quot;completed_onboarding_tasks&quot;}, {&quot;experimentIds&quot;: [&quot;20479227424&quot;], &quot;id&quot;: &quot;20513160672&quot;, &quot;key&quot;: &quot;click.read_doc&quot;}, {&quot;experimentIds&quot;: [&quot;20652570897&quot;], &quot;id&quot;: &quot;20516196762&quot;, &quot;key&quot;: &quot;actions_enabled&quot;}, {&quot;experimentIds&quot;: [&quot;20479227424&quot;], &quot;id&quot;: &quot;20518980986&quot;, &quot;key&quot;: &quot;click.dismiss_trial_banner&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20535446721&quot;, &quot;key&quot;: &quot;click.issue_actions_prompt.dismiss_prompt&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20557002247&quot;, &quot;key&quot;: &quot;click.issue_actions_prompt.setup_workflow&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20595070227&quot;, &quot;key&quot;: &quot;click.pull_request_setup_workflow&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20626600314&quot;, &quot;key&quot;: &quot;click.seats_input&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20642310305&quot;, &quot;key&quot;: &quot;click.decrease_seats_number&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20662990045&quot;, &quot;key&quot;: &quot;click.increase_seats_number&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20679620969&quot;, &quot;key&quot;: &quot;click.public_product_roadmap&quot;}, {&quot;experimentIds&quot;: [&quot;20479227424&quot;], &quot;id&quot;: &quot;20761240940&quot;, &quot;key&quot;: &quot;click.dismiss_survey_banner&quot;}, {&quot;experimentIds&quot;: [&quot;20479227424&quot;], &quot;id&quot;: &quot;20767210721&quot;, &quot;key&quot;: &quot;click.take_survey&quot;}, {&quot;experimentIds&quot;: [&quot;20652570897&quot;], &quot;id&quot;: &quot;20795281201&quot;, &quot;key&quot;: &quot;click.archive_list&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20966790249&quot;, &quot;key&quot;: &quot;contact_sales.submit&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20996500333&quot;, &quot;key&quot;: &quot;contact_sales.existing_customer&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20996890162&quot;, &quot;key&quot;: &quot;contact_sales.blank_message_field&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;21000470317&quot;, &quot;key&quot;: &quot;contact_sales.personal_email&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;21002790172&quot;, &quot;key&quot;: &quot;contact_sales.blank_phone_field&quot;}], &quot;revision&quot;: &quot;1033&quot;}" />
<!-- To prevent page flashing, the optimizely JS needs to be loaded in the
<head> tag before the DOM renders -->
<script crossorigin="anonymous" defer="defer" integrity="sha512-9/MKBn0uqL+FzbFzVkp+9oPqqZak1+HlRmUlxbicITz7RwjGX6yf6rLXhA1/lsOFPM3UcZ7ypVAnQ86oKkqz8Q==" type="application/javascript" src="https://github.githubassets.com/assets/optimizely-f7f30a06.js"></script>
<meta name="hostname" content="github.com">
<meta name="user-login" content="niufwshd">
<meta name="expected-hostname" content="github.com">
<meta name="js-proxy-site-detection-payload" content="NmRiNzI0ODk4NDdhYzc3NzlkZWI3ODc1NWUxODQxMjUyYmFhNDk0ZWJlM2Q0NjUxZGU3N2FjOTZiODA1NDA2NXx7InJlbW90ZV9hZGRyZXNzIjoiMjE2LjIxOC4yMjMuNTciLCJyZXF1ZXN0X2lkIjoiM0Q0RTo3NTM1OjExRjExMzc6MjI3NjE0Rjo2MURGRTg2RiIsInRpbWVzdGFtcCI6MTY0MjA2Mzk4NCwiaG9zdCI6ImdpdGh1Yi5jb20ifQ==">
<meta name="keyboard-shortcuts-preference" content="all">
<script type="application/json" id="memex_keyboard_shortcuts_preference">"all"</script>
<meta name="enabled-features" content="ACTIONS_CALLABLE_WORKFLOWS,MARKETPLACE_PENDING_INSTALLATIONS,PRESENCE_IDLE">
<meta http-equiv="x-pjax-version" content="2c0a4d71431d3552455e556142353d57897f73f20dc0baa773f85f760d720d40">
<meta http-equiv="x-pjax-csp-version" content="9ea82e8060ac9d44365bfa193918b70ed58abd9413362ba412abb161b3a8d1b6">
<meta http-equiv="x-pjax-css-version" content="a367e5a526e356c2d2c0565f6a798d874b819bfe46f65a7d9b15d1c5d4f66fa4">
<meta http-equiv="x-pjax-js-version" content="8c28e30786637a1fde6bc7c6cd6290d1490f0066f576b8882f38b01c0a4e2142">
<meta name="go-import" content="github.com/vishnubob/wait-for-it git https://github.com/vishnubob/wait-for-it.git">
<meta name="octolytics-dimension-user_id" content="188410" /><meta name="octolytics-dimension-user_login" content="vishnubob" /><meta name="octolytics-dimension-repository_id" content="50936918" /><meta name="octolytics-dimension-repository_nwo" content="vishnubob/wait-for-it" /><meta name="octolytics-dimension-repository_public" content="true" /><meta name="octolytics-dimension-repository_is_fork" content="false" /><meta name="octolytics-dimension-repository_network_root_id" content="50936918" /><meta name="octolytics-dimension-repository_network_root_nwo" content="vishnubob/wait-for-it" />
<link rel="canonical" href="https://github.com/vishnubob/wait-for-it/blob/master/wait-for-it.sh" data-pjax-transient>
<meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats">
<meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors">
<meta name="browser-optimizely-client-errors-url" content="https://api.github.com/_private/browser/optimizely_client/errors">
<link rel="mask-icon" href="https://github.githubassets.com/pinned-octocat.svg" color="#000000">
<link rel="alternate icon" class="js-site-favicon" type="image/png" href="https://github.githubassets.com/favicons/favicon.png">
<link rel="icon" class="js-site-favicon" type="image/svg+xml" href="https://github.githubassets.com/favicons/favicon.svg">
<meta name="theme-color" content="#1e2327">
<meta name="color-scheme" content="light dark" />
<link rel="manifest" href="/manifest.json" crossOrigin="use-credentials">
</head>
<body class="logged-in env-production page-responsive page-blob" style="word-wrap: break-word;">
<div class="position-relative js-header-wrapper ">
<a href="#start-of-content" class="p-3 color-bg-accent-emphasis color-fg-on-emphasis show-on-focus js-skip-to-content">Skip to content</a>
<span data-view-component="true" class="progress-pjax-loader js-pjax-loader-bar Progress position-fixed width-full">
<span style="width: 0%;" data-view-component="true" class="Progress-item progress-pjax-loader-bar left-0 top-0 color-bg-accent-emphasis"></span>
</span>
<script crossorigin="anonymous" defer="defer" integrity="sha512-+bZ9zzz8gbNBnB8a1MJ2H990krewmTm3uz2gs0Q5LcGHYLZHGWCqh5k5Ixx7ePGOnzC7Knly0Ggr82WlBo+1tw==" type="application/javascript" src="https://github.githubassets.com/assets/command-palette-f9b67dcf.js"></script>
<header class="Header js-details-container Details px-3 px-md-4 px-lg-5 flex-wrap flex-md-nowrap" role="banner" >
<div class="Header-item mt-n1 mb-n1 d-none d-md-flex">
<a
class="Header-link "
href="https://github.com/"
data-hotkey="g d"
aria-label="Homepage "
data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header&quot;,&quot;action&quot;:&quot;go to dashboard&quot;,&quot;label&quot;:&quot;icon:logo&quot;,&quot;originating_url&quot;:&quot;https://github.com/vishnubob/wait-for-it/blob/master/wait-for-it.sh&quot;,&quot;user_id&quot;:12984401}}" data-hydro-click-hmac="f009de3d11a69968a9e5cf5ca24e28caef2c597611cbcb66c36a68d9de067f57" data-analytics-event="{&quot;category&quot;:&quot;Header&quot;,&quot;action&quot;:&quot;go to dashboard&quot;,&quot;label&quot;:&quot;icon:logo&quot;}"
>
<svg height="32" aria-hidden="true" viewBox="0 0 16 16" version="1.1" width="32" data-view-component="true" class="octicon octicon-mark-github v-align-middle">
<path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path>
</svg>
</a>
</div>
<div class="Header-item d-md-none">
<button aria-label="Toggle navigation" aria-expanded="false" type="button" data-view-component="true" class="Header-link js-details-target btn-link"> <svg aria-hidden="true" height="24" viewBox="0 0 16 16" version="1.1" width="24" data-view-component="true" class="octicon octicon-three-bars">
<path fill-rule="evenodd" d="M1 2.75A.75.75 0 011.75 2h12.5a.75.75 0 110 1.5H1.75A.75.75 0 011 2.75zm0 5A.75.75 0 011.75 7h12.5a.75.75 0 110 1.5H1.75A.75.75 0 011 7.75zM1.75 12a.75.75 0 100 1.5h12.5a.75.75 0 100-1.5H1.75z"></path>
</svg>
</button> </div>
<div class="Header-item Header-item--full flex-column flex-md-row width-full flex-order-2 flex-md-order-none mr-0 mr-md-3 mt-3 mt-md-0 Details-content--hidden-not-important d-md-flex">
<div class="header-search flex-auto js-site-search position-relative flex-self-stretch flex-md-self-auto mb-3 mb-md-0 mr-0 mr-md-3 scoped-search site-scoped-search js-jump-to"
>
<div class="position-relative">
<!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-site-search-form" role="search" aria-label="Site" data-scope-type="Repository" data-scope-id="50936918" data-scoped-search-url="/vishnubob/wait-for-it/search" data-owner-scoped-search-url="/users/vishnubob/search" data-unscoped-search-url="/search" action="/vishnubob/wait-for-it/search" accept-charset="UTF-8" method="get">
<label class="form-control input-sm header-search-wrapper p-0 js-chromeless-input-container header-search-wrapper-jump-to position-relative d-flex flex-justify-between flex-items-center">
<input type="text"
class="form-control input-sm header-search-input jump-to-field js-jump-to-field js-site-search-focus js-site-search-field is-clearable"
data-hotkey=s,/
name="q"
data-test-selector="nav-search-input"
placeholder="Search or jump to…"
data-unscoped-placeholder="Search or jump to…"
data-scoped-placeholder="Search or jump to…"
autocapitalize="off"
role="combobox"
aria-haspopup="listbox"
aria-expanded="false"
aria-autocomplete="list"
aria-controls="jump-to-results"
aria-label="Search or jump to…"
data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations"
spellcheck="false"
autocomplete="off"
>
<input type="hidden" value="Sg-__dTIlE2VQbKXWjWzyV4_f2EsOu6c3kDhHn77MV8CeVvpmdgXwPMSCRpPA2fGM8ZV5NbUHE6IC9tAh8UK3g" data-csrf="true" class="js-data-jump-to-suggestions-path-csrf" />
<input type="hidden" class="js-site-search-type-field" name="type" >
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="20" aria-hidden="true" class="mr-1 header-search-key-slash"><path fill="none" stroke="#979A9C" opacity=".4" d="M3.5.5h12c1.7 0 3 1.3 3 3v13c0 1.7-1.3 3-3 3h-12c-1.7 0-3-1.3-3-3v-13c0-1.7 1.3-3 3-3z"></path><path fill="#979A9C" d="M11.8 6L8 15.1h-.9L10.8 6h1z"></path></svg>
<div class="Box position-absolute overflow-hidden d-none jump-to-suggestions js-jump-to-suggestions-container">
<ul class="d-none js-jump-to-suggestions-template-container">
<li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-suggestion" role="option">
<a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="suggestion">
<div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
<svg title="Repository" aria-label="Repository" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo js-jump-to-octicon-repo d-none flex-shrink-0">
<path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path>
</svg>
<svg title="Project" aria-label="Project" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project js-jump-to-octicon-project d-none flex-shrink-0">
<path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path>
</svg>
<svg title="Search" aria-label="Search" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search js-jump-to-octicon-search d-none flex-shrink-0">
<path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path>
</svg>
</div>
<img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
<div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
</div>
<div class="border rounded-1 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none js-jump-to-badge-search">
<span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
In this repository
</span>
<span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
All GitHub
</span>
<span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
</div>
<div aria-hidden="true" class="border rounded-1 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
Jump to
<span class="d-inline-block ml-1 v-align-middle">↵</span>
</div>
</a>
</li>
</ul>
<ul class="d-none js-jump-to-no-results-template-container">
<li class="d-flex flex-justify-center flex-items-center f5 d-none js-jump-to-suggestion p-2">
<span class="color-fg-muted">No suggested jump to results</span>
</li>
</ul>
<ul id="jump-to-results" role="listbox" class="p-0 m-0 js-navigation-container jump-to-suggestions-results-container js-jump-to-suggestions-results-container">
<li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-scoped-search d-none" role="option">
<a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="scoped_search">
<div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
<svg title="Repository" aria-label="Repository" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo js-jump-to-octicon-repo d-none flex-shrink-0">
<path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path>
</svg>
<svg title="Project" aria-label="Project" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project js-jump-to-octicon-project d-none flex-shrink-0">
<path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path>
</svg>
<svg title="Search" aria-label="Search" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search js-jump-to-octicon-search d-none flex-shrink-0">
<path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path>
</svg>
</div>
<img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
<div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
</div>
<div class="border rounded-1 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none js-jump-to-badge-search">
<span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
In this repository
</span>
<span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
All GitHub
</span>
<span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
</div>
<div aria-hidden="true" class="border rounded-1 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
Jump to
<span class="d-inline-block ml-1 v-align-middle">↵</span>
</div>
</a>
</li>
<li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-owner-scoped-search d-none" role="option">
<a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="owner_scoped_search">
<div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
<svg title="Repository" aria-label="Repository" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo js-jump-to-octicon-repo d-none flex-shrink-0">
<path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path>
</svg>
<svg title="Project" aria-label="Project" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project js-jump-to-octicon-project d-none flex-shrink-0">
<path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path>
</svg>
<svg title="Search" aria-label="Search" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search js-jump-to-octicon-search d-none flex-shrink-0">
<path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path>
</svg>
</div>
<img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
<div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
</div>
<div class="border rounded-1 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none js-jump-to-badge-search">
<span class="js-jump-to-badge-search-text-default d-none" aria-label="in this user">
In this user
</span>
<span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
All GitHub
</span>
<span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
</div>
<div aria-hidden="true" class="border rounded-1 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
Jump to
<span class="d-inline-block ml-1 v-align-middle">↵</span>
</div>
</a>
</li>
<li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-global-search d-none" role="option">
<a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="global_search">
<div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
<svg title="Repository" aria-label="Repository" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo js-jump-to-octicon-repo d-none flex-shrink-0">
<path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path>
</svg>
<svg title="Project" aria-label="Project" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project js-jump-to-octicon-project d-none flex-shrink-0">
<path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path>
</svg>
<svg title="Search" aria-label="Search" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search js-jump-to-octicon-search d-none flex-shrink-0">
<path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path>
</svg>
</div>
<img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
<div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
</div>
<div class="border rounded-1 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none js-jump-to-badge-search">
<span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
In this repository
</span>
<span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
All GitHub
</span>
<span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
</div>
<div aria-hidden="true" class="border rounded-1 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
Jump to
<span class="d-inline-block ml-1 v-align-middle">↵</span>
</div>
</a>
</li>
<li class="d-flex flex-justify-center flex-items-center p-0 f5 js-jump-to-suggestion">
<svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" data-view-component="true" class="m-3 anim-rotate">
<circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" />
<path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" />
</svg>
</li>
</ul>
</div>
</label>
</form> </div>
</div>
<nav class="d-flex flex-column flex-md-row flex-self-stretch flex-md-self-auto" aria-label="Global">
<a class="Header-link py-md-3 d-block d-md-none py-2 border-top border-md-top-0 border-white-fade" data-ga-click="Header, click, Nav menu - item:dashboard:user" aria-label="Dashboard" href="/dashboard">
Dashboard
</a>
<a class="js-selected-navigation-item Header-link mt-md-n3 mb-md-n3 py-2 py-md-3 mr-0 mr-md-3 border-top border-md-top-0 border-white-fade" data-hotkey="g p" data-ga-click="Header, click, Nav menu - item:pulls context:user" aria-label="Pull requests you created" data-selected-links="/pulls /pulls/assigned /pulls/mentioned /pulls" href="/pulls">
Pull<span class="d-inline d-md-none d-lg-inline"> request</span>s
</a>
<a class="js-selected-navigation-item Header-link mt-md-n3 mb-md-n3 py-2 py-md-3 mr-0 mr-md-3 border-top border-md-top-0 border-white-fade" data-hotkey="g i" data-ga-click="Header, click, Nav menu - item:issues context:user" aria-label="Issues you created" data-selected-links="/issues /issues/assigned /issues/mentioned /issues" href="/issues">
Issues
</a>
<div class="d-flex position-relative">
<a class="js-selected-navigation-item Header-link flex-auto mt-md-n3 mb-md-n3 py-2 py-md-3 mr-0 mr-md-3 border-top border-md-top-0 border-white-fade" data-ga-click="Header, click, Nav menu - item:marketplace context:user" data-octo-click="marketplace_click" data-octo-dimensions="location:nav_bar" data-selected-links=" /marketplace" href="/marketplace">
Marketplace
</a> </div>
<a class="js-selected-navigation-item Header-link mt-md-n3 mb-md-n3 py-2 py-md-3 mr-0 mr-md-3 border-top border-md-top-0 border-white-fade" data-ga-click="Header, click, Nav menu - item:explore" data-selected-links="/explore /trending /trending/developers /integrations /integrations/feature/code /integrations/feature/collaborate /integrations/feature/ship showcases showcases_search showcases_landing /explore" href="/explore">
Explore
</a>
<a class="js-selected-navigation-item Header-link d-block d-md-none py-2 py-md-3 border-top border-md-top-0 border-white-fade" data-ga-click="Header, click, Nav menu - item:workspaces context:user" data-selected-links="/codespaces /codespaces" href="/codespaces">
Codespaces
</a>
<a class="js-selected-navigation-item Header-link d-block d-md-none py-2 py-md-3 border-top border-md-top-0 border-white-fade" data-ga-click="Header, click, Nav menu - item:Sponsors" data-hydro-click="{&quot;event_type&quot;:&quot;sponsors.button_click&quot;,&quot;payload&quot;:{&quot;button&quot;:&quot;HEADER_SPONSORS_DASHBOARD&quot;,&quot;sponsorable_login&quot;:&quot;niufwshd&quot;,&quot;originating_url&quot;:&quot;https://github.com/vishnubob/wait-for-it/blob/master/wait-for-it.sh&quot;,&quot;user_id&quot;:12984401}}" data-hydro-click-hmac="380000a2293cdb908fa845daa880064440d7666bba07a627c7526a507c6942f5" data-selected-links=" /sponsors/accounts" href="/sponsors/accounts">Sponsors</a>
<a class="Header-link d-block d-md-none mr-0 mr-md-3 py-2 py-md-3 border-top border-md-top-0 border-white-fade" href="/settings/profile">
Settings
</a>
<a class="Header-link d-block d-md-none mr-0 mr-md-3 py-2 py-md-3 border-top border-md-top-0 border-white-fade" href="/niufwshd">
<img class="avatar avatar-user" loading="lazy" decoding="async" src="https://avatars.githubusercontent.com/u/12984401?s=40&amp;v=4" width="20" height="20" alt="@niufwshd" />
niufwshd
</a>
<!-- '"` --><!-- </textarea></xmp> --></option></form><form action="/logout" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="riQLQpMgHSy5kNkejVauFPGjdBPP2rkurAAYWl5SmVM5BYyDSmmODQauP7T5VlxcRDkYV2iIzpQaoc2zM_v98A" />
<button
type="submit"
class="Header-link mr-0 mr-md-3 py-2 py-md-3 border-top border-md-top-0 border-white-fade d-md-none btn-link d-block width-full text-left"
style="padding-left: 2px;"
data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header&quot;,&quot;action&quot;:&quot;sign out&quot;,&quot;label&quot;:&quot;icon:logout&quot;,&quot;originating_url&quot;:&quot;https://github.com/vishnubob/wait-for-it/blob/master/wait-for-it.sh&quot;,&quot;user_id&quot;:12984401}}" data-hydro-click-hmac="c9a3e46e6e7af79bbd7f834757df1b7da783af8596d1d088186d4059ed1fb775" data-analytics-event="{&quot;category&quot;:&quot;Header&quot;,&quot;action&quot;:&quot;sign out&quot;,&quot;label&quot;:&quot;icon:logout&quot;}"
>
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-sign-out v-align-middle">
<path fill-rule="evenodd" d="M2 2.75C2 1.784 2.784 1 3.75 1h2.5a.75.75 0 010 1.5h-2.5a.25.25 0 00-.25.25v10.5c0 .138.112.25.25.25h2.5a.75.75 0 010 1.5h-2.5A1.75 1.75 0 012 13.25V2.75zm10.44 4.5H6.75a.75.75 0 000 1.5h5.69l-1.97 1.97a.75.75 0 101.06 1.06l3.25-3.25a.75.75 0 000-1.06l-3.25-3.25a.75.75 0 10-1.06 1.06l1.97 1.97z"></path>
</svg>
Sign out
</button>
</form></nav>
</div>
<div class="Header-item Header-item--full flex-justify-center d-md-none position-relative">
<a
class="Header-link "
href="https://github.com/"
data-hotkey="g d"
aria-label="Homepage "
data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header&quot;,&quot;action&quot;:&quot;go to dashboard&quot;,&quot;label&quot;:&quot;icon:logo&quot;,&quot;originating_url&quot;:&quot;https://github.com/vishnubob/wait-for-it/blob/master/wait-for-it.sh&quot;,&quot;user_id&quot;:12984401}}" data-hydro-click-hmac="f009de3d11a69968a9e5cf5ca24e28caef2c597611cbcb66c36a68d9de067f57" data-analytics-event="{&quot;category&quot;:&quot;Header&quot;,&quot;action&quot;:&quot;go to dashboard&quot;,&quot;label&quot;:&quot;icon:logo&quot;}"
>
<svg height="32" aria-hidden="true" viewBox="0 0 16 16" version="1.1" width="32" data-view-component="true" class="octicon octicon-mark-github v-align-middle">
<path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path>
</svg>
</a>
</div>
<div class="Header-item mr-0 mr-md-3 flex-order-1 flex-md-order-none">
<notification-indicator
class="js-socket-channel"
data-test-selector="notifications-indicator"
data-channel="eyJjIjoibm90aWZpY2F0aW9uLWNoYW5nZWQ6MTI5ODQ0MDEiLCJ0IjoxNjQyMDYzOTg0fQ==--de58e652dc155fc0bd63c505b46ed58ac155b4e4ede3db99fdfc8e6186b1a569">
<a href="/notifications"
class="Header-link notification-indicator position-relative tooltipped tooltipped-sw"
aria-label="You have no unread notifications"
data-hotkey="g n"
data-ga-click="Header, go to notifications, icon:read"
data-target="notification-indicator.link">
<span class="mail-status " data-target="notification-indicator.modifier"></span>
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-bell">
<path d="M8 16a2 2 0 001.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 008 16z"></path><path fill-rule="evenodd" d="M8 1.5A3.5 3.5 0 004.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556a.018.018 0 00-.003.01l.001.006c0 .002.002.004.004.006a.017.017 0 00.006.004l.007.001h10.964l.007-.001a.016.016 0 00.006-.004.016.016 0 00.004-.006l.001-.007a.017.017 0 00-.003-.01l-1.703-2.554a1.75 1.75 0 01-.294-.97V5A3.5 3.5 0 008 1.5zM3 5a5 5 0 0110 0v2.947c0 .05.015.098.042.139l1.703 2.555A1.518 1.518 0 0113.482 13H2.518a1.518 1.518 0 01-1.263-2.36l1.703-2.554A.25.25 0 003 7.947V5z"></path>
</svg>
</a>
</notification-indicator>
</div>
<div class="Header-item position-relative d-none d-md-flex">
<details class="details-overlay details-reset">
<summary
class="Header-link"
aria-label="Create new…"
data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header&quot;,&quot;action&quot;:&quot;create new&quot;,&quot;label&quot;:&quot;icon:add&quot;,&quot;originating_url&quot;:&quot;https://github.com/vishnubob/wait-for-it/blob/master/wait-for-it.sh&quot;,&quot;user_id&quot;:12984401}}" data-hydro-click-hmac="bc68e3d340b721864c5d80ab65454d443dcf9632c50b9196a9a6daf22151161c" data-analytics-event="{&quot;category&quot;:&quot;Header&quot;,&quot;action&quot;:&quot;create new&quot;,&quot;label&quot;:&quot;icon:add&quot;}"
>
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-plus">
<path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path>
</svg> <span class="dropdown-caret"></span>
</summary>
<details-menu class="dropdown-menu dropdown-menu-sw">
<a role="menuitem" class="dropdown-item" href="/new" data-ga-click="Header, create new repository">
New repository
</a>
<a role="menuitem" class="dropdown-item" href="/new/import" data-ga-click="Header, import a repository">
Import repository
</a>
<a role="menuitem" class="dropdown-item" href="https://gist.github.com/" data-ga-click="Header, create new gist">
New gist
</a>
<a role="menuitem" class="dropdown-item" href="/organizations/new" data-ga-click="Header, create new organization">
New organization
</a>
</details-menu>
</details>
</div>
<div class="Header-item position-relative mr-0 d-none d-md-flex">
<details class="details-overlay details-reset js-feature-preview-indicator-container" data-feature-preview-indicator-src="/users/niufwshd/feature_preview/indicator_check">
<summary
class="Header-link"
aria-label="View profile and more"
data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header&quot;,&quot;action&quot;:&quot;show menu&quot;,&quot;label&quot;:&quot;icon:avatar&quot;,&quot;originating_url&quot;:&quot;https://github.com/vishnubob/wait-for-it/blob/master/wait-for-it.sh&quot;,&quot;user_id&quot;:12984401}}" data-hydro-click-hmac="76b7b8bf95d556334045f8447c7631cb91a298ab473cb8cdae958ee8fa7209e7" data-analytics-event="{&quot;category&quot;:&quot;Header&quot;,&quot;action&quot;:&quot;show menu&quot;,&quot;label&quot;:&quot;icon:avatar&quot;}"
>
<img src="https://avatars.githubusercontent.com/u/12984401?s=40&amp;v=4" alt="@niufwshd" size="20" height="20" width="20" data-view-component="true" class="avatar avatar-small circle" />
<span class="feature-preview-indicator js-feature-preview-indicator" style="top: 1px;" hidden></span>
<span class="dropdown-caret"></span>
</summary>
<details-menu class="dropdown-menu dropdown-menu-sw" style="width: 180px"
src="/users/12984401/menu" preload>
<include-fragment>
<p class="text-center mt-3" data-hide-on-error>
<svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" data-view-component="true" class="anim-rotate">
<circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" />
<path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" />
</svg>
</p>
<p class="ml-1 mb-2 mt-2 color-fg-default" data-show-on-error>
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
<path fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path>
</svg>
Sorry, something went wrong.
</p>
</include-fragment>
</details-menu>
</details>
</div>
</header>
</div>
<div id="start-of-content" class="show-on-focus"></div>
<div data-pjax-replace id="js-flash-container">
<template class="js-flash-template">
<div class="flash flash-full {{ className }}">
<div class=" px-2" >
<button class="flash-close js-flash-close" type="button" aria-label="Dismiss this message">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
<path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path>
</svg>
</button>
<div>{{ message }}</div>
</div>
</div>
</template>
</div>
<include-fragment class="js-notification-shelf-include-fragment" data-base-src="https://github.com/notifications/beta/shelf"></include-fragment>
<details class="details-reset details-overlay details-overlay-dark js-command-palette-dialog">
<summary class="command-palette-details-summary" aria-label="command palette trigger">
</summary>
<details-dialog class="command-palette-details-dialog d-flex flex-column flex-justify-center height-fit" aria-label="command palette">
<command-palette
class="command-palette color-bg-default rounded-3"
data-return-to=/vishnubob/wait-for-it/blob/master/wait-for-it.sh
data-user-id="12984401"
>
<input type="hidden" value="zODHfTUbSQ0rcfQk2yS0qR2fk9kmkJwOMsrsiX4wBlrKijWE9uz3zvTfxlAvGqOs7lCKxdCJ1YciHaArbHaFEg" data-csrf="true" class="js-graphql-csrf" />
<iframe class="d-none js-command-palette-commands" sandbox="allow-scripts allow-same-origin" srcdoc="<script crossorigin=&quot;anonymous&quot; defer=&quot;defer&quot; integrity=&quot;sha512-2Jz3lq/Gk0f8RePMFf+bUCfw6LwZ3nXfh3AQmMFOUj5cIW/rCeZcWRFO/q0l00bbLMcdXkpDj6KvP9Ny2qh8QA==&quot; type=&quot;application/javascript&quot; src=&quot;https://github.githubassets.com/assets/command-runner-d89cf796.js&quot;></script>
" aria-hidden="true" data-url="https://github.com"></iframe>
<input type="hidden" name="color-mode-path" id="color-mode-path" value="/settings/appearance/color_mode" class="js-color-mode-path" autocomplete="off" />
<input type="hidden" value="DUK3kRw8bu88MxXUVAjnVGHttKIAYzMi9C4s2WhDqM-VaqGQSEAmQMBQJqFxT5R47JiEzAt9tG3ybqVyK0fohA" data-csrf="true" class="js-color-mode-csrf" />
<command-palette-mode
data-char="#"
data-scope-types="[&quot;&quot;]"
data-placeholder="Search issues and pull requests"
></command-palette-mode>
<command-palette-mode
data-char="#"
data-scope-types="[&quot;owner&quot;,&quot;repository&quot;]"
data-placeholder="Search issues, pull requests, discussions, and projects"
></command-palette-mode>
<command-palette-mode
data-char="!"
data-scope-types="[&quot;owner&quot;,&quot;repository&quot;]"
data-placeholder="Search projects"
></command-palette-mode>
<command-palette-mode
data-char="@"
data-scope-types="[&quot;&quot;]"
data-placeholder="Search or jump to a user, organization, or repository"
></command-palette-mode>
<command-palette-mode
data-char="@"
data-scope-types="[&quot;owner&quot;]"
data-placeholder="Search or jump to a repository"
></command-palette-mode>
<command-palette-mode
data-char="/"
data-scope-types="[&quot;repository&quot;]"
data-placeholder="Search files"
></command-palette-mode>
<command-palette-mode
data-char="?"
></command-palette-mode>
<command-palette-mode
data-char="&gt;"
data-placeholder="Run a command"
></command-palette-mode>
<command-palette-mode
data-char=""
data-scope-types="[&quot;owner&quot;]"
data-placeholder="Search or jump to..."
></command-palette-mode>
<command-palette-mode
class="js-command-palette-default-mode"
data-char=""
data-placeholder="Search or jump to..."
></command-palette-mode>
<command-palette-input placeholder="Search or jump to..."
>
<div class="js-search-icon d-flex flex-items-center mr-2" style="height: 26px">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search color-fg-muted">
<path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path>
</svg>
</div>
<div class="js-spinner d-flex flex-items-center mr-2 color-fg-muted" hidden>
<svg aria-label="Loading" class="anim-rotate" viewBox="0 0 16 16" fill="none" width="16" height="16">
<circle
cx="8"
cy="8"
r="7"
stroke="currentColor"
stroke-opacity="0.25"
stroke-width="2"
vector-effect="non-scaling-stroke"
></circle>
<path
d="M15 8a7.002 7.002 0 00-7-7"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
vector-effect="non-scaling-stroke"
></path>
</svg>
</div>
<command-palette-scope >
<command-palette-token
data-text="vishnubob"
data-id="MDQ6VXNlcjE4ODQxMA=="
data-type="owner"
data-value="vishnubob"
data-targets="command-palette-scope.tokens"
class="color-fg-default text-semibold"
>vishnubob<span class="color-fg-subtle text-normal">&nbsp;&nbsp;/&nbsp;&nbsp;</span></command-palette-token>
<command-palette-token
data-text="wait-for-it"
data-id="MDEwOlJlcG9zaXRvcnk1MDkzNjkxOA=="
data-type="repository"
data-value="wait-for-it"
data-targets="command-palette-scope.tokens"
class="color-fg-default text-semibold"
>wait-for-it<span class="color-fg-subtle text-normal">&nbsp;&nbsp;/&nbsp;&nbsp;</span></command-palette-token>
</command-palette-scope>
</command-palette-input>
<command-palette-item-stack id="command-palette-item-stack" class="item-stack-transition-height" role="listbox" aria-label="Command palette results">
<command-palette-tip class="color-fg-muted f6 px-3 py-1 my-2" data-type="" data-mode="" data-value="">
Type <code class="p-1 color-bg-subtle rounded-1">#</code> for issues and pull requests, <code class="p-1 color-bg-subtle rounded-1">></code> for commands, and <code class="p-1 color-bg-subtle rounded-1">?</code> for help
</command-palette-tip>
<command-palette-tip class="color-fg-muted f6 px-3 py-1 my-2" data-type="owner" data-mode="" data-value="">
Type <code class="p-1 color-bg-subtle rounded-1">#</code> for issues, pull requests, and projects, <code class="p-1 color-bg-subtle rounded-1">></code> for commands, and <code class="p-1 color-bg-subtle rounded-1">?</code> for help
</command-palette-tip>
<command-palette-tip class="color-fg-muted f6 px-3 py-1 my-2" data-type="repository" data-mode="" data-value="">
Type <code class="p-1 color-bg-subtle rounded-1">#</code> for issues, pull requests, and projects, <code class="p-1 color-bg-subtle rounded-1">/</code> for files, and <code class="p-1 color-bg-subtle rounded-1">></code> for commands
</command-palette-tip>
<command-palette-tip class="mx-3 my-2 flash flash-error d-flex flex-items-center" data-on-error>
<div>
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
<path fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path>
</svg>
</div>
<div class="px-2">
We’ve encountered an error and some results aren't available at this time. Type a new search or try again later.
</div>
</command-palette-tip>
<command-palette-tip class="h4 color-fg-default pl-3 pb-2 pt-3" data-on-empty data-match-mode="[^?]|^$">
No results matched your search
</command-palette-tip>
<command-palette-item-group
data-group-id="top"
data-group-title="Top result"
data-group-hint=""
data-group-limits="{}"
data-targets="command-palette-item-stack.groups"
>
</command-palette-item-group>
<command-palette-item-group
data-group-id="commands"
data-group-title="Commands"
data-group-hint="Type &gt; to filter"
data-group-limits="{}"
data-targets="command-palette-item-stack.groups"
>
</command-palette-item-group>
<command-palette-item-group
data-group-id="files"
data-group-title="Files"
data-group-hint=""
data-group-limits="{}"
data-targets="command-palette-item-stack.groups"
>
</command-palette-item-group>
<command-palette-item-group
data-group-id="pages"
data-group-title="Pages"
data-group-hint=""
data-group-limits="{&quot;repository&quot;:10}"
data-targets="command-palette-item-stack.groups"
>
</command-palette-item-group>
<command-palette-item-group
data-group-id="access_policies"
data-group-title="Access Policies"
data-group-hint=""
data-group-limits="{}"
data-targets="command-palette-item-stack.groups"
>
</command-palette-item-group>
<command-palette-item-group
data-group-id="organizations"
data-group-title="Organizations"
data-group-hint=""
data-group-limits="{}"
data-targets="command-palette-item-stack.groups"
>
</command-palette-item-group>
<command-palette-item-group
data-group-id="repositories"
data-group-title="Repositories"
data-group-hint=""
data-group-limits="{}"
data-targets="command-palette-item-stack.groups"
>
</command-palette-item-group>
<command-palette-item-group
data-group-id="references"
data-group-title="Issues, pull requests, and discussions"
data-group-hint="Type # to filter"
data-group-limits="{}"
data-targets="command-palette-item-stack.groups"
>
</command-palette-item-group>
<command-palette-item-group
data-group-id="teams"
data-group-title="Teams"
data-group-hint=""
data-group-limits="{}"
data-targets="command-palette-item-stack.groups"
>
</command-palette-item-group>
<command-palette-item-group
data-group-id="users"
data-group-title="Users"
data-group-hint=""
data-group-limits="{}"
data-targets="command-palette-item-stack.groups"
>
</command-palette-item-group>
<command-palette-item-group
data-group-id="projects"
data-group-title="Projects"
data-group-hint=""
data-group-limits="{}"
data-targets="command-palette-item-stack.groups"
>
</command-palette-item-group>
<command-palette-item-group
data-group-id="footer"
data-group-title="Footer"
data-group-hint=""
data-group-limits="{}"
data-targets="command-palette-item-stack.groups"
>
</command-palette-item-group>
<command-palette-item-group
data-group-id="modes_help"
data-group-title="Modes"
data-group-hint=""
data-group-limits="{}"
data-targets="command-palette-item-stack.groups"
>
</command-palette-item-group>
<command-palette-item-group
data-group-id="filters_help"
data-group-title="Use filters in issues, pull requests, discussions, and projects"
data-group-hint=""
data-group-limits="{}"
data-targets="command-palette-item-stack.groups"
>
</command-palette-item-group>
</command-palette-item-stack>
<div class="js-command-local-provider-octicons" hidden>
<div data-local-provider-octicon-id="arrow-right-color-fg-muted">
<svg height="16" class="octicon octicon-arrow-right color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.22 2.97a.75.75 0 011.06 0l4.25 4.25a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06-1.06l2.97-2.97H3.75a.75.75 0 010-1.5h7.44L8.22 4.03a.75.75 0 010-1.06z"></path></svg>
</div>
<div data-local-provider-octicon-id="arrow-right-color-fg-default">
<svg height="16" class="octicon octicon-arrow-right color-fg-default" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.22 2.97a.75.75 0 011.06 0l4.25 4.25a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06-1.06l2.97-2.97H3.75a.75.75 0 010-1.5h7.44L8.22 4.03a.75.75 0 010-1.06z"></path></svg>
</div>
<div data-local-provider-octicon-id="codespaces-color-fg-muted">
<svg height="16" class="octicon octicon-codespaces color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M2 1.75C2 .784 2.784 0 3.75 0h8.5C13.216 0 14 .784 14 1.75v5a1.75 1.75 0 01-1.75 1.75h-8.5A1.75 1.75 0 012 6.75v-5zm1.75-.25a.25.25 0 00-.25.25v5c0 .138.112.25.25.25h8.5a.25.25 0 00.25-.25v-5a.25.25 0 00-.25-.25h-8.5zM0 11.25c0-.966.784-1.75 1.75-1.75h12.5c.966 0 1.75.784 1.75 1.75v3A1.75 1.75 0 0114.25 16H1.75A1.75 1.75 0 010 14.25v-3zM1.75 11a.25.25 0 00-.25.25v3c0 .138.112.25.25.25h12.5a.25.25 0 00.25-.25v-3a.25.25 0 00-.25-.25H1.75z"></path><path fill-rule="evenodd" d="M3 12.75a.75.75 0 01.75-.75h.5a.75.75 0 010 1.5h-.5a.75.75 0 01-.75-.75zm4 0a.75.75 0 01.75-.75h4.5a.75.75 0 010 1.5h-4.5a.75.75 0 01-.75-.75z"></path></svg>
</div>
<div data-local-provider-octicon-id="copy-color-fg-muted">
<svg height="16" class="octicon octicon-copy color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z"></path><path fill-rule="evenodd" d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z"></path></svg>
</div>
<div data-local-provider-octicon-id="dash-color-fg-muted">
<svg height="16" class="octicon octicon-dash color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M2 7.75A.75.75 0 012.75 7h10a.75.75 0 010 1.5h-10A.75.75 0 012 7.75z"></path></svg>
</div>
<div data-local-provider-octicon-id="file-color-fg-muted">
<svg height="16" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M3.75 1.5a.25.25 0 00-.25.25v11.5c0 .138.112.25.25.25h8.5a.25.25 0 00.25-.25V6H9.75A1.75 1.75 0 018 4.25V1.5H3.75zm5.75.56v2.19c0 .138.112.25.25.25h2.19L9.5 2.06zM2 1.75C2 .784 2.784 0 3.75 0h5.086c.464 0 .909.184 1.237.513l3.414 3.414c.329.328.513.773.513 1.237v8.086A1.75 1.75 0 0112.25 15h-8.5A1.75 1.75 0 012 13.25V1.75z"></path></svg>
</div>
<div data-local-provider-octicon-id="lock-color-fg-muted">
<svg height="16" class="octicon octicon-lock color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 4v2h-.25A1.75 1.75 0 002 7.75v5.5c0 .966.784 1.75 1.75 1.75h8.5A1.75 1.75 0 0014 13.25v-5.5A1.75 1.75 0 0012.25 6H12V4a4 4 0 10-8 0zm6.5 2V4a2.5 2.5 0 00-5 0v2h5zM12 7.5h.25a.25.25 0 01.25.25v5.5a.25.25 0 01-.25.25h-8.5a.25.25 0 01-.25-.25v-5.5a.25.25 0 01.25-.25H12z"></path></svg>
</div>
<div data-local-provider-octicon-id="moon-color-fg-muted">
<svg height="16" class="octicon octicon-moon color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M9.598 1.591a.75.75 0 01.785-.175 7 7 0 11-8.967 8.967.75.75 0 01.961-.96 5.5 5.5 0 007.046-7.046.75.75 0 01.175-.786zm1.616 1.945a7 7 0 01-7.678 7.678 5.5 5.5 0 107.678-7.678z"></path></svg>
</div>
<div data-local-provider-octicon-id="person-color-fg-muted">
<svg height="16" class="octicon octicon-person color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M10.5 5a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0zm.061 3.073a4 4 0 10-5.123 0 6.004 6.004 0 00-3.431 5.142.75.75 0 001.498.07 4.5 4.5 0 018.99 0 .75.75 0 101.498-.07 6.005 6.005 0 00-3.432-5.142z"></path></svg>
</div>
<div data-local-provider-octicon-id="pencil-color-fg-muted">
<svg height="16" class="octicon octicon-pencil color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M11.013 1.427a1.75 1.75 0 012.474 0l1.086 1.086a1.75 1.75 0 010 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 01-.927-.928l.929-3.25a1.75 1.75 0 01.445-.758l8.61-8.61zm1.414 1.06a.25.25 0 00-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 000-.354l-1.086-1.086zM11.189 6.25L9.75 4.81l-6.286 6.287a.25.25 0 00-.064.108l-.558 1.953 1.953-.558a.249.249 0 00.108-.064l6.286-6.286z"></path></svg>
</div>
<div data-local-provider-octicon-id="issue-opened-open">
<svg height="16" class="octicon octicon-issue-opened open" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path d="M8 9.5a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path><path fill-rule="evenodd" d="M8 0a8 8 0 100 16A8 8 0 008 0zM1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0z"></path></svg>
</div>
<div data-local-provider-octicon-id="git-pull-request-draft-color-fg-muted">
<svg height="16" class="octicon octicon-git-pull-request-draft color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M2.5 3.25a.75.75 0 111.5 0 .75.75 0 01-1.5 0zM3.25 1a2.25 2.25 0 00-.75 4.372v5.256a2.251 2.251 0 101.5 0V5.372A2.25 2.25 0 003.25 1zm0 11a.75.75 0 100 1.5.75.75 0 000-1.5zm9.5 3a2.25 2.25 0 100-4.5 2.25 2.25 0 000 4.5zm0-3a.75.75 0 100 1.5.75.75 0 000-1.5z"></path><path d="M14 7.5a1.25 1.25 0 11-2.5 0 1.25 1.25 0 012.5 0zm0-4.25a1.25 1.25 0 11-2.5 0 1.25 1.25 0 012.5 0z"></path></svg>
</div>
<div data-local-provider-octicon-id="search-color-fg-muted">
<svg height="16" class="octicon octicon-search color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path></svg>
</div>
<div data-local-provider-octicon-id="sun-color-fg-muted">
<svg height="16" class="octicon octicon-sun color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 10.5a2.5 2.5 0 100-5 2.5 2.5 0 000 5zM8 12a4 4 0 100-8 4 4 0 000 8zM8 0a.75.75 0 01.75.75v1.5a.75.75 0 01-1.5 0V.75A.75.75 0 018 0zm0 13a.75.75 0 01.75.75v1.5a.75.75 0 01-1.5 0v-1.5A.75.75 0 018 13zM2.343 2.343a.75.75 0 011.061 0l1.06 1.061a.75.75 0 01-1.06 1.06l-1.06-1.06a.75.75 0 010-1.06zm9.193 9.193a.75.75 0 011.06 0l1.061 1.06a.75.75 0 01-1.06 1.061l-1.061-1.06a.75.75 0 010-1.061zM16 8a.75.75 0 01-.75.75h-1.5a.75.75 0 010-1.5h1.5A.75.75 0 0116 8zM3 8a.75.75 0 01-.75.75H.75a.75.75 0 010-1.5h1.5A.75.75 0 013 8zm10.657-5.657a.75.75 0 010 1.061l-1.061 1.06a.75.75 0 11-1.06-1.06l1.06-1.06a.75.75 0 011.06 0zm-9.193 9.193a.75.75 0 010 1.06l-1.06 1.061a.75.75 0 11-1.061-1.06l1.06-1.061a.75.75 0 011.061 0z"></path></svg>
</div>
<div data-local-provider-octicon-id="sync-color-fg-muted">
<svg height="16" class="octicon octicon-sync color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 2.5a5.487 5.487 0 00-4.131 1.869l1.204 1.204A.25.25 0 014.896 6H1.25A.25.25 0 011 5.75V2.104a.25.25 0 01.427-.177l1.38 1.38A7.001 7.001 0 0114.95 7.16a.75.75 0 11-1.49.178A5.501 5.501 0 008 2.5zM1.705 8.005a.75.75 0 01.834.656 5.501 5.501 0 009.592 2.97l-1.204-1.204a.25.25 0 01.177-.427h3.646a.25.25 0 01.25.25v3.646a.25.25 0 01-.427.177l-1.38-1.38A7.001 7.001 0 011.05 8.84a.75.75 0 01.656-.834z"></path></svg>
</div>
<div data-local-provider-octicon-id="trash-color-fg-muted">
<svg height="16" class="octicon octicon-trash color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M6.5 1.75a.25.25 0 01.25-.25h2.5a.25.25 0 01.25.25V3h-3V1.75zm4.5 0V3h2.25a.75.75 0 010 1.5H2.75a.75.75 0 010-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75zM4.496 6.675a.75.75 0 10-1.492.15l.66 6.6A1.75 1.75 0 005.405 15h5.19c.9 0 1.652-.681 1.741-1.576l.66-6.6a.75.75 0 00-1.492-.149l-.66 6.6a.25.25 0 01-.249.225h-5.19a.25.25 0 01-.249-.225l-.66-6.6z"></path></svg>
</div>
<div data-local-provider-octicon-id="key-color-fg-muted">
<svg height="16" class="octicon octicon-key color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M6.5 5.5a4 4 0 112.731 3.795.75.75 0 00-.768.18L7.44 10.5H6.25a.75.75 0 00-.75.75v1.19l-.06.06H4.25a.75.75 0 00-.75.75v1.19l-.06.06H1.75a.25.25 0 01-.25-.25v-1.69l5.024-5.023a.75.75 0 00.181-.768A3.995 3.995 0 016.5 5.5zm4-5.5a5.5 5.5 0 00-5.348 6.788L.22 11.72a.75.75 0 00-.22.53v2C0 15.216.784 16 1.75 16h2a.75.75 0 00.53-.22l.5-.5a.75.75 0 00.22-.53V14h.75a.75.75 0 00.53-.22l.5-.5a.75.75 0 00.22-.53V12h.75a.75.75 0 00.53-.22l.932-.932A5.5 5.5 0 1010.5 0zm.5 6a1 1 0 100-2 1 1 0 000 2z"></path></svg>
</div>
<div data-local-provider-octicon-id="comment-discussion-color-fg-muted">
<svg height="16" class="octicon octicon-comment-discussion color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.5 2.75a.25.25 0 01.25-.25h8.5a.25.25 0 01.25.25v5.5a.25.25 0 01-.25.25h-3.5a.75.75 0 00-.53.22L3.5 11.44V9.25a.75.75 0 00-.75-.75h-1a.25.25 0 01-.25-.25v-5.5zM1.75 1A1.75 1.75 0 000 2.75v5.5C0 9.216.784 10 1.75 10H2v1.543a1.457 1.457 0 002.487 1.03L7.061 10h3.189A1.75 1.75 0 0012 8.25v-5.5A1.75 1.75 0 0010.25 1h-8.5zM14.5 4.75a.25.25 0 00-.25-.25h-.5a.75.75 0 110-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0114.25 12H14v1.543a1.457 1.457 0 01-2.487 1.03L9.22 12.28a.75.75 0 111.06-1.06l2.22 2.22v-2.19a.75.75 0 01.75-.75h1a.25.25 0 00.25-.25v-5.5z"></path></svg>
</div>
<div data-local-provider-octicon-id="bell-color-fg-muted">
<svg height="16" class="octicon octicon-bell color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path d="M8 16a2 2 0 001.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 008 16z"></path><path fill-rule="evenodd" d="M8 1.5A3.5 3.5 0 004.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556a.018.018 0 00-.003.01l.001.006c0 .002.002.004.004.006a.017.017 0 00.006.004l.007.001h10.964l.007-.001a.016.016 0 00.006-.004.016.016 0 00.004-.006l.001-.007a.017.017 0 00-.003-.01l-1.703-2.554a1.75 1.75 0 01-.294-.97V5A3.5 3.5 0 008 1.5zM3 5a5 5 0 0110 0v2.947c0 .05.015.098.042.139l1.703 2.555A1.518 1.518 0 0113.482 13H2.518a1.518 1.518 0 01-1.263-2.36l1.703-2.554A.25.25 0 003 7.947V5z"></path></svg>
</div>
<div data-local-provider-octicon-id="bell-slash-color-fg-muted">
<svg height="16" class="octicon octicon-bell-slash color-fg-muted" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 1.5c-.997 0-1.895.416-2.534 1.086A.75.75 0 014.38 1.55 5 5 0 0113 5v2.373a.75.75 0 01-1.5 0V5A3.5 3.5 0 008 1.5zM4.182 4.31L1.19 2.143a.75.75 0 10-.88 1.214L3 5.305v2.642a.25.25 0 01-.042.139L1.255 10.64A1.518 1.518 0 002.518 13h11.108l1.184.857a.75.75 0 10.88-1.214l-1.375-.996a1.196 1.196 0 00-.013-.01L4.198 4.321a.733.733 0 00-.016-.011zm7.373 7.19L4.5 6.391v1.556c0 .346-.102.683-.294.97l-1.703 2.556a.018.018 0 00-.003.01.015.015 0 00.005.012.017.017 0 00.006.004l.007.001h9.037zM8 16a2 2 0 001.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 008 16z"></path></svg>
</div>
</div>
<server-defined-provider data-type="search-links"></server-defined-provider>
<server-defined-provider data-type="help">
<command-palette-help
data-group="modes_help"
data-prefix="#"
data-scope-types="[&quot;&quot;]"
>
<span data-target="command-palette-help.titleElement">Search for <strong>issues</strong> and <strong>pull requests</strong></span>
<span data-target="command-palette-help.hintElement">
<kbd class="hx_kbd">#</kbd>
</span>
</command-palette-help>
<command-palette-help
data-group="modes_help"
data-prefix="#"
data-scope-types="[&quot;owner&quot;,&quot;repository&quot;]"
>
<span data-target="command-palette-help.titleElement">Search for <strong>issues, pull requests, discussions,</strong> and <strong>projects</strong></span>
<span data-target="command-palette-help.hintElement">
<kbd class="hx_kbd">#</kbd>
</span>
</command-palette-help>
<command-palette-help
data-group="modes_help"
data-prefix="@"
data-scope-types="[&quot;&quot;]"
>
<span data-target="command-palette-help.titleElement">Search for <strong>organizations, repositories,</strong> and <strong>users</strong></span>
<span data-target="command-palette-help.hintElement">
<kbd class="hx_kbd">@</kbd>
</span>
</command-palette-help>
<command-palette-help
data-group="modes_help"
data-prefix="!"
data-scope-types="[&quot;owner&quot;,&quot;repository&quot;]"
>
<span data-target="command-palette-help.titleElement">Search for <strong>projects</strong></span>
<span data-target="command-palette-help.hintElement">
<kbd class="hx_kbd">!</kbd>
</span>
</command-palette-help>
<command-palette-help
data-group="modes_help"
data-prefix="/"
data-scope-types="[&quot;repository&quot;]"
>
<span data-target="command-palette-help.titleElement">Search for <strong>files</strong></span>
<span data-target="command-palette-help.hintElement">
<kbd class="hx_kbd">/</kbd>
</span>
</command-palette-help>
<command-palette-help
data-group="modes_help"
data-prefix="&gt;"
>
<span data-target="command-palette-help.titleElement">Activate <strong>command mode</strong></span>
<span data-target="command-palette-help.hintElement">
<kbd class="hx_kbd">&gt;</kbd>
</span>
</command-palette-help>
<command-palette-help
data-group="filters_help"
data-prefix="# author:@me"
>
<span data-target="command-palette-help.titleElement">Search your issues, pull requests, and discussions</span>
<span data-target="command-palette-help.hintElement">
<kbd class="hx_kbd"># author:@me</kbd>
</span>
</command-palette-help>
<command-palette-help
data-group="filters_help"
data-prefix="# author:@me"
>
<span data-target="command-palette-help.titleElement">Search your issues, pull requests, and discussions</span>
<span data-target="command-palette-help.hintElement">
<kbd class="hx_kbd"># author:@me</kbd>
</span>
</command-palette-help>
<command-palette-help
data-group="filters_help"
data-prefix="# is:pr"
>
<span data-target="command-palette-help.titleElement">Filter to pull requests</span>
<span data-target="command-palette-help.hintElement">
<kbd class="hx_kbd"># is:pr</kbd>
</span>
</command-palette-help>
<command-palette-help
data-group="filters_help"
data-prefix="# is:issue"
>
<span data-target="command-palette-help.titleElement">Filter to issues</span>
<span data-target="command-palette-help.hintElement">
<kbd class="hx_kbd"># is:issue</kbd>
</span>
</command-palette-help>
<command-palette-help
data-group="filters_help"
data-prefix="# is:discussion"
data-scope-types="[&quot;owner&quot;,&quot;repository&quot;]"
>
<span data-target="command-palette-help.titleElement">Filter to discussions</span>
<span data-target="command-palette-help.hintElement">
<kbd class="hx_kbd"># is:discussion</kbd>
</span>
</command-palette-help>
<command-palette-help
data-group="filters_help"
data-prefix="# is:project"
data-scope-types="[&quot;owner&quot;,&quot;repository&quot;]"
>
<span data-target="command-palette-help.titleElement">Filter to projects</span>
<span data-target="command-palette-help.hintElement">
<kbd class="hx_kbd"># is:project</kbd>
</span>
</command-palette-help>
<command-palette-help
data-group="filters_help"
data-prefix="# is:open"
>
<span data-target="command-palette-help.titleElement">Filter to open issues, pull requests, and discussions</span>
<span data-target="command-palette-help.hintElement">
<kbd class="hx_kbd"># is:open</kbd>
</span>
</command-palette-help>
</server-defined-provider>
<server-defined-provider
data-type="prefetched"
data-fetch-debounce="0"
data-src="/command_palette/commands"
data-supported-modes="[&quot;&gt;&quot;]"
data-supports-commands
></server-defined-provider>
<server-defined-provider
data-type="prefetched"
data-fetch-debounce="0"
data-src="/command_palette/jump_to_page_navigation"
data-supported-modes="[&quot;&quot;]"
></server-defined-provider>
<server-defined-provider
data-type="remote"
data-fetch-debounce="200"
data-src="/command_palette/issues"
data-supported-modes="[&quot;#&quot;,&quot;#&quot;]"
data-supported-scope-types="[&quot;owner&quot;,&quot;repository&quot;,&quot;&quot;]"
></server-defined-provider>
<server-defined-provider
data-type="remote"
data-fetch-debounce="200"
data-src="/command_palette/jump_to"
data-supported-modes="[&quot;@&quot;,&quot;@&quot;]"
data-supported-scope-types="[&quot;&quot;,&quot;owner&quot;]"
></server-defined-provider>
<server-defined-provider
data-type="remote"
data-fetch-debounce="200"
data-src="/command_palette/jump_to_members_only"
data-supported-modes="[&quot;&quot;]"
></server-defined-provider>
<server-defined-provider
data-type="prefetched"
data-fetch-debounce="0"
data-src="/command_palette/jump_to_members_only_prefetched"
data-supported-modes="[&quot;@&quot;,&quot;@&quot;,&quot;&quot;]"
data-supported-scope-types="[&quot;&quot;,&quot;owner&quot;]"
></server-defined-provider>
<server-defined-provider
data-type="files"
data-fetch-debounce="0"
data-src="/command_palette/files"
data-supported-modes="[&quot;/&quot;]"
data-supported-scope-types="[&quot;repository&quot;]"
></server-defined-provider>
<server-defined-provider
data-type="remote"
data-fetch-debounce="200"
data-src="/command_palette/discussions"
data-supported-modes="[&quot;#&quot;]"
data-supported-scope-types="[&quot;owner&quot;,&quot;repository&quot;]"
></server-defined-provider>
<server-defined-provider
data-type="remote"
data-fetch-debounce="200"
data-src="/command_palette/projects"
data-supported-modes="[&quot;#&quot;,&quot;!&quot;]"
data-supported-scope-types="[&quot;owner&quot;,&quot;repository&quot;]"
></server-defined-provider>
<server-defined-provider
data-type="prefetched"
data-fetch-debounce="0"
data-src="/command_palette/recent_issues"
data-supported-modes="[&quot;#&quot;,&quot;#&quot;]"
data-supported-scope-types="[&quot;owner&quot;,&quot;repository&quot;,&quot;&quot;]"
></server-defined-provider>
<server-defined-provider
data-type="remote"
data-fetch-debounce="200"
data-src="/command_palette/teams"
data-supported-modes="[&quot;@&quot;,&quot;&quot;]"
data-supported-scope-types="[&quot;owner&quot;]"
></server-defined-provider>
<server-defined-provider
data-type="remote"
data-fetch-debounce="200"
data-src="/command_palette/name_with_owner_repository"
data-supported-modes="[&quot;&quot;]"
></server-defined-provider>
<server-defined-provider
data-type="main-window-commands"
data-fetch-debounce="0"
data-supported-modes="[&quot;&gt;&quot;]"
data-supports-commands
></server-defined-provider>
</command-palette>
</details-dialog>
</details>
<div class="position-fixed bottom-0 left-0 ml-5 mb-5 js-command-palette-toasts" style="z-index: 1000">
<div hidden class="Toast Toast--loading">
<span class="Toast-icon">
<svg class="Toast--spinner" viewBox="0 0 32 32" width="18" height="18" aria-hidden="true">
<path
fill="#959da5"
d="M16 0 A16 16 0 0 0 16 32 A16 16 0 0 0 16 0 M16 4 A12 12 0 0 1 16 28 A12 12 0 0 1 16 4"
/>
<path fill="#ffffff" d="M16 0 A16 16 0 0 1 32 16 L28 16 A12 12 0 0 0 16 4z"></path>
</svg>
</span>
<span class="Toast-content"></span>
</div>
<div hidden class="anim-fade-in fast Toast Toast--error">
<span class="Toast-icon">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-stop">
<path fill-rule="evenodd" d="M4.47.22A.75.75 0 015 0h6a.75.75 0 01.53.22l4.25 4.25c.141.14.22.331.22.53v6a.75.75 0 01-.22.53l-4.25 4.25A.75.75 0 0111 16H5a.75.75 0 01-.53-.22L.22 11.53A.75.75 0 010 11V5a.75.75 0 01.22-.53L4.47.22zm.84 1.28L1.5 5.31v5.38l3.81 3.81h5.38l3.81-3.81V5.31L10.69 1.5H5.31zM8 4a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 018 4zm0 8a1 1 0 100-2 1 1 0 000 2z"></path>
</svg>
</span>
<span class="Toast-content"></span>
</div>
<div hidden class="anim-fade-in fast Toast Toast--warning">
<span class="Toast-icon">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
<path fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path>
</svg>
</span>
<span class="Toast-content"></span>
</div>
<div hidden class="anim-fade-in fast Toast Toast--success">
<span class="Toast-icon">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check">
<path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path>
</svg>
</span>
<span class="Toast-content"></span>
</div>
<div hidden class="anim-fade-in fast Toast">
<span class="Toast-icon">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-info">
<path fill-rule="evenodd" d="M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm6.5-.25A.75.75 0 017.25 7h1a.75.75 0 01.75.75v2.75h.25a.75.75 0 010 1.5h-2a.75.75 0 010-1.5h.25v-2h-.25a.75.75 0 01-.75-.75zM8 6a1 1 0 100-2 1 1 0 000 2z"></path>
</svg>
</span>
<span class="Toast-content"></span>
</div>
</div>
<div hidden class="js-command-palette-pjax-meta-data" data-pjax-replace id="command-palette-pjax-meta-data"
data-subject-id="MDEwOlJlcG9zaXRvcnk1MDkzNjkxOA=="
data-subject-type="Repository"
>
</div>
<div
class="application-main "
data-commit-hovercards-enabled
data-discussion-hovercards-enabled
data-issue-and-pr-hovercards-enabled
>
<div itemscope itemtype="http://schema.org/SoftwareSourceCode" class="">
<main id="js-repo-pjax-container" data-pjax-container >
<div id="repository-container-header" class="pt-3 hide-full-screen mb-5" style="background-color: var(--color-page-header-bg);" data-pjax-replace>
<div class="d-flex mb-3 px-3 px-md-4 px-lg-5">
<div class="flex-auto min-width-0 width-fit mr-3">
<h1 class=" d-flex flex-wrap flex-items-center wb-break-word f3 text-normal">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2">
<path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path>
</svg>
<span class="author flex-self-stretch" itemprop="author">
<a class="url fn" rel="author" data-hovercard-type="user" data-hovercard-url="/users/vishnubob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/vishnubob">vishnubob</a>
</span>
<span class="mx-1 flex-self-stretch color-fg-muted">/</span>
<strong itemprop="name" class="mr-2 flex-self-stretch">
<a data-pjax="#repo-content-pjax-container" href="/vishnubob/wait-for-it">wait-for-it</a>
</strong>
<span></span><span class="Label Label--secondary v-align-middle mr-1">Public</span>
</h1>
</div>
<ul class="pagehead-actions flex-shrink-0 d-none d-md-inline" style="padding: 2px 0;">
<li>
<notifications-list-subscription-form class="f5 position-relative">
<details
class="details-reset details-overlay f5 position-relative"
data-target="notifications-list-subscription-form.details"
data-action="toggle:notifications-list-subscription-form#detailsToggled"
>
<summary data-hydro-click="{&quot;event_type&quot;:&quot;repository.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;WATCH_BUTTON&quot;,&quot;repository_id&quot;:50936918,&quot;originating_url&quot;:&quot;https://github.com/vishnubob/wait-for-it/blob/master/wait-for-it.sh&quot;,&quot;user_id&quot;:12984401}}" data-hydro-click-hmac="cbac469ad2f724a6373a70670b76f946f1a8c50256e7c35b6ab5d5b3cbe92b8e" data-ga-click="Repository, click Watch settings, action:blob#show" aria-label="Notification settings" data-view-component="true" class="btn-sm btn"> <span data-menu-button>
<span
hidden
data-target="notifications-list-subscription-form.unwatchButtonCopy"
>
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-eye">
<path fill-rule="evenodd" d="M1.679 7.932c.412-.621 1.242-1.75 2.366-2.717C5.175 4.242 6.527 3.5 8 3.5c1.473 0 2.824.742 3.955 1.715 1.124.967 1.954 2.096 2.366 2.717a.119.119 0 010 .136c-.412.621-1.242 1.75-2.366 2.717C10.825 11.758 9.473 12.5 8 12.5c-1.473 0-2.824-.742-3.955-1.715C2.92 9.818 2.09 8.69 1.679 8.068a.119.119 0 010-.136zM8 2c-1.981 0-3.67.992-4.933 2.078C1.797 5.169.88 6.423.43 7.1a1.619 1.619 0 000 1.798c.45.678 1.367 1.932 2.637 3.024C4.329 13.008 6.019 14 8 14c1.981 0 3.67-.992 4.933-2.078 1.27-1.091 2.187-2.345 2.637-3.023a1.619 1.619 0 000-1.798c-.45-.678-1.367-1.932-2.637-3.023C11.671 2.992 9.981 2 8 2zm0 8a2 2 0 100-4 2 2 0 000 4z"></path>
</svg>
Unwatch
</span>
<span
hidden
data-target="notifications-list-subscription-form.stopIgnoringButtonCopy"
>
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-bell-slash">
<path fill-rule="evenodd" d="M8 1.5c-.997 0-1.895.416-2.534 1.086A.75.75 0 014.38 1.55 5 5 0 0113 5v2.373a.75.75 0 01-1.5 0V5A3.5 3.5 0 008 1.5zM4.182 4.31L1.19 2.143a.75.75 0 10-.88 1.214L3 5.305v2.642a.25.25 0 01-.042.139L1.255 10.64A1.518 1.518 0 002.518 13h11.108l1.184.857a.75.75 0 10.88-1.214l-1.375-.996a1.196 1.196 0 00-.013-.01L4.198 4.321a.733.733 0 00-.016-.011zm7.373 7.19L4.5 6.391v1.556c0 .346-.102.683-.294.97l-1.703 2.556a.018.018 0 00-.003.01.015.015 0 00.005.012.017.017 0 00.006.004l.007.001h9.037zM8 16a2 2 0 001.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 008 16z"></path>
</svg>
Stop ignoring
</span>
<span
data-target="notifications-list-subscription-form.watchButtonCopy"
>
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-eye">
<path fill-rule="evenodd" d="M1.679 7.932c.412-.621 1.242-1.75 2.366-2.717C5.175 4.242 6.527 3.5 8 3.5c1.473 0 2.824.742 3.955 1.715 1.124.967 1.954 2.096 2.366 2.717a.119.119 0 010 .136c-.412.621-1.242 1.75-2.366 2.717C10.825 11.758 9.473 12.5 8 12.5c-1.473 0-2.824-.742-3.955-1.715C2.92 9.818 2.09 8.69 1.679 8.068a.119.119 0 010-.136zM8 2c-1.981 0-3.67.992-4.933 2.078C1.797 5.169.88 6.423.43 7.1a1.619 1.619 0 000 1.798c.45.678 1.367 1.932 2.637 3.024C4.329 13.008 6.019 14 8 14c1.981 0 3.67-.992 4.933-2.078 1.27-1.091 2.187-2.345 2.637-3.023a1.619 1.619 0 000-1.798c-.45-.678-1.367-1.932-2.637-3.023C11.671 2.992 9.981 2 8 2zm0 8a2 2 0 100-4 2 2 0 000 4z"></path>
</svg>
Watch
</span>
</span>
<span id="repo-notifications-counter" data-target="notifications-list-subscription-form.socialCount" data-pjax-replace="true" title="104" data-view-component="true" class="Counter">104</span>
<span class="dropdown-caret"></span>
</summary>
<details-menu
class="SelectMenu "
role="menu"
data-target="notifications-list-subscription-form.menu"
>
<div class="SelectMenu-modal notifications-component-menu-modal">
<header class="SelectMenu-header">
<h3 class="SelectMenu-title">Notifications</h3>
<button class="SelectMenu-closeButton" type="button" aria-label="Close menu" data-action="click:notifications-list-subscription-form#closeMenu">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
<path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path>
</svg>
</button>
</header>
<div class="SelectMenu-list">
<form data-target="notifications-list-subscription-form.form" data-action="submit:notifications-list-subscription-form#submitForm" action="/notifications/subscribe" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="fgZ7O1rqqP1SadxCkM8G19h0VpN_0zCFNyBrjRq8mkygRZ-XgDFrMWCqXxHZJN5Lb6bq7BhWJqcLJnE1NLOgTA" autocomplete="off" />
<input type="hidden" name="repository_id" value="50936918">
<button
type="submit"
name="do"
value="included"
class="SelectMenu-item flex-items-start"
role="menuitemradio"
aria-checked="true"
data-targets="notifications-list-subscription-form.subscriptionButtons"
>
<span class="f5">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check">
<path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path>
</svg>
</span>
<div>
<div class="f5 text-bold">
Participating and @mentions
</div>
<div class="text-small color-fg-muted text-normal pb-1">
Only receive notifications from this repository when participating or @mentioned.
</div>
</div>
</button>
<button
type="submit"
name="do"
value="subscribed"
class="SelectMenu-item flex-items-start"
role="menuitemradio"
aria-checked="false"
data-targets="notifications-list-subscription-form.subscriptionButtons"
>
<span class="f5">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check">
<path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path>
</svg>
</span>
<div>
<div class="f5 text-bold">
All Activity
</div>
<div class="text-small color-fg-muted text-normal pb-1">
Notified of all notifications on this repository.
</div>
</div>
</button>
<button
type="submit"
name="do"
value="ignore"
class="SelectMenu-item flex-items-start"
role="menuitemradio"
aria-checked="false"
data-targets="notifications-list-subscription-form.subscriptionButtons"
>
<span class="f5">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check">
<path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path>
</svg>
</span>
<div>
<div class="f5 text-bold">
Ignore
</div>
<div class="text-small color-fg-muted text-normal pb-1">
Never be notified.
</div>
</div>
</button>
</form>
<button
class="SelectMenu-item flex-items-start pr-3"
type="button"
role="menuitemradio"
data-target="notifications-list-subscription-form.customButton"
data-action="click:notifications-list-subscription-form#openCustomDialog"
aria-haspopup="true"
aria-checked="false"
>
<span class="f5">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check">
<path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path>
</svg>
</span>
<div>
<div class="d-flex flex-items-start flex-justify-between">
<div class="f5 text-bold">Custom</div>
<div class="f5 pr-1">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-arrow-right">
<path fill-rule="evenodd" d="M8.22 2.97a.75.75 0 011.06 0l4.25 4.25a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06-1.06l2.97-2.97H3.75a.75.75 0 010-1.5h7.44L8.22 4.03a.75.75 0 010-1.06z"></path>
</svg>
</div>
</div>
<div class="text-small color-fg-muted text-normal pb-1">
Select events you want to be notified of in addition to participating and @mentions.
</div>
</div>
</button>
<div class="px-3 py-2 d-flex color-bg-subtle flex-items-center">
<span class="f5">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-device-mobile SelectMenu-icon SelectMenu-icon--device-mobile">
<path fill-rule="evenodd" d="M3.75 0A1.75 1.75 0 002 1.75v12.5c0 .966.784 1.75 1.75 1.75h8.5A1.75 1.75 0 0014 14.25V1.75A1.75 1.75 0 0012.25 0h-8.5zM3.5 1.75a.25.25 0 01.25-.25h8.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25h-8.5a.25.25 0 01-.25-.25V1.75zM8 13a1 1 0 100-2 1 1 0 000 2z"></path>
</svg>
</span>
<span className="text-small color-fg-muted text-normal pb-1">
Get push notifications on <a target="_blank" rel="noopener noreferrer" href="https://apps.apple.com/app/apple-store/id1477376905?ct=watch-dropdown&amp;mt=8&amp;pt=524675">iOS</a> or <a target="_blank" rel="noopener noreferrer" href="https://play.google.com/store/apps/details?id=com.github.android&amp;referrer=utm_campaign%3Dwatch-dropdown%26utm_medium%3Dweb%26utm_source%3Dgithub">Android</a>.
</span>
</div>
</div>
</div>
</details-menu>
<details-dialog class="notifications-component-dialog " data-target="notifications-list-subscription-form.customDialog" hidden>
<div class="SelectMenu-modal notifications-component-dialog-modal overflow-visible">
<form data-target="notifications-list-subscription-form.customform" data-action="submit:notifications-list-subscription-form#submitCustomForm" action="/notifications/subscribe" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="gUu3KpbH44s02JzJ7AUWMLnGo8KOyFkqV9-V54HNj3BfCFOGTBwgRwYbH5ql7s6sDhQfvelNTwhr2Y9fr8K1cA" autocomplete="off" />
<input type="hidden" name="repository_id" value="50936918">
<header class="d-sm-none SelectMenu-header pb-0 border-bottom-0 px-2 px-sm-3">
<h1 class="f3 SelectMenu-title d-inline-flex">
<button
class="color-bg-default border-0 px-2 py-0 m-0 Link--secondary f5"
aria-label="Return to menu"
type="button"
data-action="click:notifications-list-subscription-form#closeCustomDialog"
>
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-arrow-left">
<path fill-rule="evenodd" d="M7.78 12.53a.75.75 0 01-1.06 0L2.47 8.28a.75.75 0 010-1.06l4.25-4.25a.75.75 0 011.06 1.06L4.81 7h7.44a.75.75 0 010 1.5H4.81l2.97 2.97a.75.75 0 010 1.06z"></path>
</svg>
</button>
Custom
</h1>
</header>
<header class="d-none d-sm-flex flex-items-start pt-1">
<button
class="border-0 px-2 pt-1 m-0 Link--secondary f5"
style="background-color: transparent;"
aria-label="Return to menu"
type="button"
data-action="click:notifications-list-subscription-form#closeCustomDialog"
>
<svg style="position: relative; left: 2px; top: 1px" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-arrow-left">
<path fill-rule="evenodd" d="M7.78 12.53a.75.75 0 01-1.06 0L2.47 8.28a.75.75 0 010-1.06l4.25-4.25a.75.75 0 011.06 1.06L4.81 7h7.44a.75.75 0 010 1.5H4.81l2.97 2.97a.75.75 0 010 1.06z"></path>
</svg>
</button>
<h1 class="pt-1 pr-4 pb-0 pl-0 f5 text-bold">
Custom
</h1>
</header>
<fieldset>
<legend>
<div class="text-small color-fg-muted pt-0 pr-3 pb-3 pl-6 pl-sm-5 border-bottom mb-3">
Select events you want to be notified of in addition to participating and @mentions.
</div>
</legend>
<div class="form-checkbox mr-3 ml-6 ml-sm-5 mb-2 mt-0">
<label class="f5 text-normal">
<input
type="checkbox"
name="thread_types[]"
value="Issue"
data-targets="notifications-list-subscription-form.threadTypeCheckboxes"
data-action="change:notifications-list-subscription-form#threadTypeCheckboxesUpdated"
>
Issues
</label>
</div>
<div class="form-checkbox mr-3 ml-6 ml-sm-5 mb-2 mt-0">
<label class="f5 text-normal">
<input
type="checkbox"
name="thread_types[]"
value="PullRequest"
data-targets="notifications-list-subscription-form.threadTypeCheckboxes"
data-action="change:notifications-list-subscription-form#threadTypeCheckboxesUpdated"
>
Pull requests
</label>
</div>
<div class="form-checkbox mr-3 ml-6 ml-sm-5 mb-2 mt-0">
<label class="f5 text-normal">
<input
type="checkbox"
name="thread_types[]"
value="Release"
data-targets="notifications-list-subscription-form.threadTypeCheckboxes"
data-action="change:notifications-list-subscription-form#threadTypeCheckboxesUpdated"
>
Releases
</label>
</div>
<div class="form-checkbox mr-3 ml-6 ml-sm-5 mb-2 mt-0">
<label class="f5 text-normal">
<input
type="checkbox"
name="thread_types[]"
value="Discussion"
data-targets="notifications-list-subscription-form.threadTypeCheckboxes"
data-action="change:notifications-list-subscription-form#threadTypeCheckboxesUpdated"
>
Discussions
</label>
<span
class="tooltipped tooltipped-nw mr-2 p-1 float-right"
aria-label="Discussions are not enabled for this repo">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-info color-fg-muted">
<path fill-rule="evenodd" d="M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm6.5-.25A.75.75 0 017.25 7h1a.75.75 0 01.75.75v2.75h.25a.75.75 0 010 1.5h-2a.75.75 0 010-1.5h.25v-2h-.25a.75.75 0 01-.75-.75zM8 6a1 1 0 100-2 1 1 0 000 2z"></path>
</svg>
</span>
</div>
<div class="form-checkbox mr-3 ml-6 ml-sm-5 mb-2 mt-0">
<label class="f5 text-normal">
<input
type="checkbox"
name="thread_types[]"
value="SecurityAlert"
data-targets="notifications-list-subscription-form.threadTypeCheckboxes"
data-action="change:notifications-list-subscription-form#threadTypeCheckboxesUpdated"
>
Security alerts
</label>
</div>
</fieldset>
<div class="pt-2 pb-3 px-3 d-flex flex-justify-start flex-row-reverse">
<button name="do" value="custom" data-target="notifications-list-subscription-form.customSubmit" disabled="disabled" type="submit" data-view-component="true" class="btn-primary btn-sm btn ml-2"> Apply
</button>
<button data-action="click:notifications-list-subscription-form#resetForm" data-close-dialog="" type="button" data-view-component="true" class="btn-sm btn"> Cancel
</button>
</div>
</form> </div>
</details-dialog>
<div class="notifications-component-dialog-overlay"></div>
</details>
</notifications-list-subscription-form>
</li>
<li>
<form class="btn-with-count" action="/vishnubob/wait-for-it/fork" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="5bllj3N5rvuNS8AlGUG3vrX__6wMuC9B8763XL_FFsBIhoxqAzLzd_A6R4peV33GA9CUmVHJDPjARa3QOojizA" autocomplete="off" />
<button data-hydro-click="{&quot;event_type&quot;:&quot;repository.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;FORK_BUTTON&quot;,&quot;repository_id&quot;:50936918,&quot;originating_url&quot;:&quot;https://github.com/vishnubob/wait-for-it/blob/master/wait-for-it.sh&quot;,&quot;user_id&quot;:12984401}}" data-hydro-click-hmac="08a18218a2d89f610fedc64f59f630bed3ed128832236c525847502f598fe941" data-ga-click="Repository, show fork modal, action:blob#show; text:Fork" aria-label="Fork your own copy of vishnubob/wait-for-it to your account" type="submit" data-view-component="true" class="btn-sm btn"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo-forked mr-2">
<path fill-rule="evenodd" d="M5 3.25a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm0 2.122a2.25 2.25 0 10-1.5 0v.878A2.25 2.25 0 005.75 8.5h1.5v2.128a2.251 2.251 0 101.5 0V8.5h1.5a2.25 2.25 0 002.25-2.25v-.878a2.25 2.25 0 10-1.5 0v.878a.75.75 0 01-.75.75h-4.5A.75.75 0 015 6.25v-.878zm3.75 7.378a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm3-8.75a.75.75 0 100-1.5.75.75 0 000 1.5z"></path>
</svg>Fork
<span id="repo-network-counter" data-pjax-replace="true" title="2,042" data-view-component="true" class="Counter">2k</span>
</button></form>
</li>
<li>
<div data-view-component="true" class="js-toggler-container js-social-container starring-container BtnGroup d-flex">
<form class="starred js-social-form BtnGroup-parent flex-auto" action="/vishnubob/wait-for-it/unstar" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="XKr9_lvGsPN0iIjiN1tz0yaJAYoMvz_PJ7OtUMq0s5F9vWOi9fIrKkEm_yL_1KPKoyuw-8XfzyZLug3N801gYA" autocomplete="off" />
<input type="hidden" name="context" value="repository">
<button data-hydro-click="{&quot;event_type&quot;:&quot;repository.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;UNSTAR_BUTTON&quot;,&quot;repository_id&quot;:50936918,&quot;originating_url&quot;:&quot;https://github.com/vishnubob/wait-for-it/blob/master/wait-for-it.sh&quot;,&quot;user_id&quot;:12984401}}" data-hydro-click-hmac="e14f20c50670a8d6f2faa6ee93fd042ee8f78c2940bbe99b08246ae12f647f76" data-ga-click="Repository, click unstar button, action:blob#show; text:Unstar" aria-label="Unstar this repository" type="submit" data-view-component="true" class="js-toggler-target rounded-left-2 border-right-0 btn-sm btn BtnGroup-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star-fill starred-button-icon d-inline-block mr-2">
<path fill-rule="evenodd" d="M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25z"></path>
</svg><span data-view-component="true" class="d-inline">
Starred
</span> <span id="repo-stars-counter-unstar" aria-label="7294 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-pjax-replace="true" title="7,294" data-view-component="true" class="Counter js-social-count">7.3k</span>
</button></form>
<form class="unstarred js-social-form BtnGroup-parent flex-auto" action="/vishnubob/wait-for-it/star" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="0rIj5BQA0bx49GzLqoJCatb1VP2W6MlvKqb5Mo4oiIpQt2waT0chmALby2ptBtgH1GujYi3P5G5kakP17RFBnw" autocomplete="off" />
<input type="hidden" name="context" value="repository">
<button data-hydro-click="{&quot;event_type&quot;:&quot;repository.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;STAR_BUTTON&quot;,&quot;repository_id&quot;:50936918,&quot;originating_url&quot;:&quot;https://github.com/vishnubob/wait-for-it/blob/master/wait-for-it.sh&quot;,&quot;user_id&quot;:12984401}}" data-hydro-click-hmac="bdbb13aac6518de0ff8083a541f749ce21a37445749a5f1a449a5ad76dbe33ca" data-ga-click="Repository, click star button, action:blob#show; text:Star" aria-label="Star this repository" type="submit" data-view-component="true" class="js-toggler-target rounded-left-2 btn-sm btn BtnGroup-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star d-inline-block mr-2">
<path fill-rule="evenodd" d="M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25zm0 2.445L6.615 5.5a.75.75 0 01-.564.41l-3.097.45 2.24 2.184a.75.75 0 01.216.664l-.528 3.084 2.769-1.456a.75.75 0 01.698 0l2.77 1.456-.53-3.084a.75.75 0 01.216-.664l2.24-2.183-3.096-.45a.75.75 0 01-.564-.41L8 2.694v.001z"></path>
</svg><span data-view-component="true" class="d-inline">
Star
</span> <span id="repo-stars-counter-star" aria-label="7294 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-pjax-replace="true" title="7,294" data-view-component="true" class="Counter js-social-count">7.3k</span>
</button></form>
<details id="details-2885e6" data-view-component="true" class="details-reset details-overlay BtnGroup-parent js-user-list-menu d-inline-block position-relative">
<summary aria-label="Add this repository to a list" data-view-component="true" class="btn-sm btn BtnGroup-item px-2 float-none"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-triangle-down">
<path d="M4.427 7.427l3.396 3.396a.25.25 0 00.354 0l3.396-3.396A.25.25 0 0011.396 7H4.604a.25.25 0 00-.177.427z"></path>
</svg>
</summary> <template class="js-user-list-create-dialog-template" data-label="Create list">
<div class="Box-header">
<h2 class="Box-title">Create list</h2>
</div>
<form class="Box-body d-flex flex-column p-3 js-user-list-form" action="/stars/niufwshd/lists" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="4BvKbKu2H2UO19rzXE-Tf2ug0LFozVoyouBZK3wJW3a3xdv2kZHcUZFuLujMQcnCNA1eMJpZn2ivAU_laNNp_w" autocomplete="off" />
<p class="color-fg-subtle mb-3">Create a list to organize your starred repositories.</p>
<input type="hidden" name="repository_id" value="{{ repositoryId }}">
<div class="form-group mx-0 mt-0 mb-2 js-user-list-input-container js-characters-remaining-container position-relative">
<auto-check src="/stars/niufwshd/list-check?attr=name" required>
<text-expander keys=":" data-emoji-url="/autocomplete/emoji">
<input
type="text"
name="user_list[name]"
class="form-control js-user-list-input js-characters-remaining-field"
placeholder="⭐️ Name this list"
value=""
aria-label="List name"
maxlength="32"
data-maxlength="32"
autofocus
required
>
</text-expander>
<input type="hidden" value="WcHBbtFGT3lIfyRmY7mCNtmBaAgP_wDFr4Sb09npE5hCYmI9B4Mdgg_ZZYQyTRxjIWR2aL6JR06cDCKgqMV8Aw" data-csrf="true" />
</auto-check>
<p
class="note error position-relative js-user-list-error"
hidden
>
Name .
</p>
<p class="mt-1 text-small float-right js-characters-remaining" data-suffix="remaining" hidden>
32 remaining
</p>
</div>
<div class="form-group mx-0 mt-0 mb-2 js-user-list-input-container js-characters-remaining-container position-relative">
<text-expander keys=":" data-emoji-url="/autocomplete/emoji">
<textarea
name="user_list[description]"
class="form-control js-user-list-input js-characters-remaining-field"
placeholder="Write a description"
aria-label="List description"
maxlength="160"
data-maxlength="160"
style="height: 74px; min-height: 74px"
></textarea>
</text-expander>
<p
class="note error position-relative js-user-list-error"
hidden
>
Description .
</p>
<p class="mt-1 text-small float-right js-characters-remaining" data-suffix="remaining" hidden>
160 remaining
</p>
</div>
<div hidden="hidden" data-generic-message="Unable to save your list at this time." data-view-component="true" class="js-user-list-base flash flash-error mx-0 mt-0 mb-2">
.
</div> <button disabled="disabled" data-disable-invalid="true" data-submitting-message="Creating..." type="submit" data-view-component="true" class="btn-primary btn btn-block mt-2"> Create
</button>
<p class="note mt-2 mb-0">
<strong>Tip:</strong> type <code>:</code> to add emoji to the name or description.
</p>
</form>
<div data-view-component="true" class="Box-footer Box-row--gray text-small color-fg-muted d-flex flex-items-baseline py-2">
<span title="Feature Release Label: Beta" aria-label="Feature Release Label: Beta" data-view-component="true" class="Label Label--success Label--inline px-2 mr-2">Beta</span>
<span class="mr-1">Lists are currently in beta.</span>
<a href="/github/feedback/discussions/categories/lists-feedback">Share feedback and report bugs.</a>
</div>
</template>
<details-menu
class="SelectMenu right-0"
src="/vishnubob/wait-for-it/lists"
role="menu"
>
<div class="SelectMenu-modal">
<button class="SelectMenu-closeButton position-absolute right-0 m-2" type="button" aria-label="Close menu" data-toggle-for="details-2885e6">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
<path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path>
</svg>
</button>
<div
id="filter-menu-2885e6"
class="d-flex flex-column flex-1 overflow-hidden"
>
<div
class="SelectMenu-list"
>
<include-fragment class="SelectMenu-loading" aria-label="Loading">
<svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" data-view-component="true" class="anim-rotate">
<circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" />
<path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" />
</svg>
</include-fragment>
</div>
</div>
</div>
</details-menu>
</details>
</div>
</li>
<li>
</li>
</ul>
</div>
<div id="responsive-meta-container" data-pjax-replace>
</div>
<nav data-pjax="#js-repo-pjax-container" aria-label="Repository" data-view-component="true" class="js-repo-nav js-sidenav-container-pjax js-responsive-underlinenav overflow-hidden UnderlineNav px-3 px-md-4 px-lg-5">
<ul data-view-component="true" class="UnderlineNav-body list-style-none">
<li data-view-component="true" class="d-inline-flex">
<a id="code-tab" href="/vishnubob/wait-for-it" data-tab-item="i0code-tab" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages repo_deployments /vishnubob/wait-for-it" data-pjax="#repo-content-pjax-container" data-hotkey="g c" data-ga-click="Repository, Navigation click, Code tab" aria-current="page" data-view-component="true" class="UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item selected">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code UnderlineNav-octicon d-none d-sm-inline">
<path fill-rule="evenodd" d="M4.72 3.22a.75.75 0 011.06 1.06L2.06 8l3.72 3.72a.75.75 0 11-1.06 1.06L.47 8.53a.75.75 0 010-1.06l4.25-4.25zm6.56 0a.75.75 0 10-1.06 1.06L13.94 8l-3.72 3.72a.75.75 0 101.06 1.06l4.25-4.25a.75.75 0 000-1.06l-4.25-4.25z"></path>
</svg>
<span data-content="Code">Code</span>
<span id="code-repo-tab-count" data-pjax-replace="" title="Not available" data-view-component="true" class="Counter"></span>
</a></li>
<li data-view-component="true" class="d-inline-flex">
<a id="issues-tab" href="/vishnubob/wait-for-it/issues" data-tab-item="i1issues-tab" data-selected-links="repo_issues repo_labels repo_milestones /vishnubob/wait-for-it/issues" data-pjax="#repo-content-pjax-container" data-hotkey="g i" data-ga-click="Repository, Navigation click, Issues tab" data-view-component="true" class="UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened UnderlineNav-octicon d-none d-sm-inline">
<path d="M8 9.5a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path><path fill-rule="evenodd" d="M8 0a8 8 0 100 16A8 8 0 008 0zM1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0z"></path>
</svg>
<span data-content="Issues">Issues</span>
<span id="issues-repo-tab-count" data-pjax-replace="" title="31" data-view-component="true" class="Counter">31</span>
</a></li>
<li data-view-component="true" class="d-inline-flex">
<a id="pull-requests-tab" href="/vishnubob/wait-for-it/pulls" data-tab-item="i2pull-requests-tab" data-selected-links="repo_pulls checks /vishnubob/wait-for-it/pulls" data-pjax="#repo-content-pjax-container" data-hotkey="g p" data-ga-click="Repository, Navigation click, Pull requests tab" data-view-component="true" class="UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request UnderlineNav-octicon d-none d-sm-inline">
<path fill-rule="evenodd" d="M7.177 3.073L9.573.677A.25.25 0 0110 .854v4.792a.25.25 0 01-.427.177L7.177 3.427a.25.25 0 010-.354zM3.75 2.5a.75.75 0 100 1.5.75.75 0 000-1.5zm-2.25.75a2.25 2.25 0 113 2.122v5.256a2.251 2.251 0 11-1.5 0V5.372A2.25 2.25 0 011.5 3.25zM11 2.5h-1V4h1a1 1 0 011 1v5.628a2.251 2.251 0 101.5 0V5A2.5 2.5 0 0011 2.5zm1 10.25a.75.75 0 111.5 0 .75.75 0 01-1.5 0zM3.75 12a.75.75 0 100 1.5.75.75 0 000-1.5z"></path>
</svg>
<span data-content="Pull requests">Pull requests</span>
<span id="pull-requests-repo-tab-count" data-pjax-replace="" title="39" data-view-component="true" class="Counter">39</span>
</a></li>
<li data-view-component="true" class="d-inline-flex">
<a id="actions-tab" href="/vishnubob/wait-for-it/actions" data-tab-item="i3actions-tab" data-selected-links="repo_actions /vishnubob/wait-for-it/actions" data-pjax="#repo-content-pjax-container" data-hotkey="g a" data-ga-click="Repository, Navigation click, Actions tab" data-view-component="true" class="UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play UnderlineNav-octicon d-none d-sm-inline">
<path fill-rule="evenodd" d="M1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0zM8 0a8 8 0 100 16A8 8 0 008 0zM6.379 5.227A.25.25 0 006 5.442v5.117a.25.25 0 00.379.214l4.264-2.559a.25.25 0 000-.428L6.379 5.227z"></path>
</svg>
<span data-content="Actions">Actions</span>
<span id="actions-repo-tab-count" data-pjax-replace="" title="Not available" data-view-component="true" class="Counter"></span>
</a></li>
<li data-view-component="true" class="d-inline-flex">
<a id="projects-tab" href="/vishnubob/wait-for-it/projects?type=beta" data-tab-item="i4projects-tab" data-selected-links="repo_projects new_repo_project repo_project /vishnubob/wait-for-it/projects?type=beta" data-pjax="#repo-content-pjax-container" data-hotkey="g b" data-ga-click="Repository, Navigation click, Projects tab" data-view-component="true" class="UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-table UnderlineNav-octicon d-none d-sm-inline">
<path fill-rule="evenodd" d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v3.585a.746.746 0 010 .83v8.085A1.75 1.75 0 0114.25 16H6.309a.748.748 0 01-1.118 0H1.75A1.75 1.75 0 010 14.25V6.165a.746.746 0 010-.83V1.75zM1.5 6.5v7.75c0 .138.112.25.25.25H5v-8H1.5zM5 5H1.5V1.75a.25.25 0 01.25-.25H5V5zm1.5 1.5v8h7.75a.25.25 0 00.25-.25V6.5h-8zm8-1.5h-8V1.5h7.75a.25.25 0 01.25.25V5z"></path>
</svg>
<span data-content="Projects">Projects</span>
<span id="projects-repo-tab-count" data-pjax-replace="" title="0" hidden="hidden" data-view-component="true" class="Counter">0</span>
</a></li>
<li data-view-component="true" class="d-inline-flex">
<a id="wiki-tab" href="/vishnubob/wait-for-it/wiki" data-tab-item="i5wiki-tab" data-selected-links="repo_wiki /vishnubob/wait-for-it/wiki" data-pjax="#repo-content-pjax-container" data-hotkey="g w" data-ga-click="Repository, Navigation click, Wikis tab" data-view-component="true" class="UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-book UnderlineNav-octicon d-none d-sm-inline">
<path fill-rule="evenodd" d="M0 1.75A.75.75 0 01.75 1h4.253c1.227 0 2.317.59 3 1.501A3.744 3.744 0 0111.006 1h4.245a.75.75 0 01.75.75v10.5a.75.75 0 01-.75.75h-4.507a2.25 2.25 0 00-1.591.659l-.622.621a.75.75 0 01-1.06 0l-.622-.621A2.25 2.25 0 005.258 13H.75a.75.75 0 01-.75-.75V1.75zm8.755 3a2.25 2.25 0 012.25-2.25H14.5v9h-3.757c-.71 0-1.4.201-1.992.572l.004-7.322zm-1.504 7.324l.004-5.073-.002-2.253A2.25 2.25 0 005.003 2.5H1.5v9h3.757a3.75 3.75 0 011.994.574z"></path>
</svg>
<span data-content="Wiki">Wiki</span>
<span id="wiki-repo-tab-count" data-pjax-replace="" title="Not available" data-view-component="true" class="Counter"></span>
</a></li>
<li data-view-component="true" class="d-inline-flex">
<a id="security-tab" href="/vishnubob/wait-for-it/security" data-tab-item="i6security-tab" data-selected-links="security overview alerts policy token_scanning code_scanning /vishnubob/wait-for-it/security" data-pjax="#repo-content-pjax-container" data-hotkey="g s" data-ga-click="Repository, Navigation click, Security tab" data-view-component="true" class="UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield UnderlineNav-octicon d-none d-sm-inline">
<path fill-rule="evenodd" d="M7.467.133a1.75 1.75 0 011.066 0l5.25 1.68A1.75 1.75 0 0115 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.7 1.7 0 01-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 011.217-1.667l5.25-1.68zm.61 1.429a.25.25 0 00-.153 0l-5.25 1.68a.25.25 0 00-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.2.2 0 00.154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.25.25 0 00-.174-.237l-5.25-1.68zM9 10.5a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.75a.75.75 0 10-1.5 0v3a.75.75 0 001.5 0v-3z"></path>
</svg>
<span data-content="Security">Security</span>
<include-fragment src="/vishnubob/wait-for-it/security/overall-count" accept="text/fragment+html"></include-fragment>
</a></li>
<li data-view-component="true" class="d-inline-flex">
<a id="insights-tab" href="/vishnubob/wait-for-it/pulse" data-tab-item="i7insights-tab" data-selected-links="repo_graphs repo_contributors dependency_graph dependabot_updates pulse people community /vishnubob/wait-for-it/pulse" data-pjax="#repo-content-pjax-container" data-ga-click="Repository, Navigation click, Insights tab" data-view-component="true" class="UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-graph UnderlineNav-octicon d-none d-sm-inline">
<path fill-rule="evenodd" d="M1.5 1.75a.75.75 0 00-1.5 0v12.5c0 .414.336.75.75.75h14.5a.75.75 0 000-1.5H1.5V1.75zm14.28 2.53a.75.75 0 00-1.06-1.06L10 7.94 7.53 5.47a.75.75 0 00-1.06 0L3.22 8.72a.75.75 0 001.06 1.06L7 7.06l2.47 2.47a.75.75 0 001.06 0l5.25-5.25z"></path>
</svg>
<span data-content="Insights">Insights</span>
<span id="insights-repo-tab-count" data-pjax-replace="" title="Not available" data-view-component="true" class="Counter"></span>
</a></li>
</ul>
<div style="visibility:hidden;" data-view-component="true" class="UnderlineNav-actions js-responsive-underlinenav-overflow position-absolute pr-3 pr-md-4 pr-lg-5 right-0"> <details data-view-component="true" class="details-overlay details-reset position-relative">
<summary role="button" data-view-component="true"> <div class="UnderlineNav-item mr-0 border-0">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-kebab-horizontal">
<path d="M8 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM1.5 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm13 0a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path>
</svg>
<span class="sr-only">More</span>
</div>
</summary>
<div data-view-component="true"> <details-menu role="menu" data-view-component="true" class="dropdown-menu dropdown-menu-sw">
<ul>
<li data-menu-item="i0code-tab" hidden>
<a role="menuitem" class="js-selected-navigation-item selected dropdown-item" aria-current="page" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages repo_deployments /vishnubob/wait-for-it" href="/vishnubob/wait-for-it">
Code
</a> </li>
<li data-menu-item="i1issues-tab" hidden>
<a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links="repo_issues repo_labels repo_milestones /vishnubob/wait-for-it/issues" href="/vishnubob/wait-for-it/issues">
Issues
</a> </li>
<li data-menu-item="i2pull-requests-tab" hidden>
<a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links="repo_pulls checks /vishnubob/wait-for-it/pulls" href="/vishnubob/wait-for-it/pulls">
Pull requests
</a> </li>
<li data-menu-item="i3actions-tab" hidden>
<a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links="repo_actions /vishnubob/wait-for-it/actions" href="/vishnubob/wait-for-it/actions">
Actions
</a> </li>
<li data-menu-item="i4projects-tab" hidden>
<a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links="repo_projects new_repo_project repo_project /vishnubob/wait-for-it/projects?type=beta" href="/vishnubob/wait-for-it/projects?type=beta">
Projects
</a> </li>
<li data-menu-item="i5wiki-tab" hidden>
<a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links="repo_wiki /vishnubob/wait-for-it/wiki" href="/vishnubob/wait-for-it/wiki">
Wiki
</a> </li>
<li data-menu-item="i6security-tab" hidden>
<a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links="security overview alerts policy token_scanning code_scanning /vishnubob/wait-for-it/security" href="/vishnubob/wait-for-it/security">
Security
</a> </li>
<li data-menu-item="i7insights-tab" hidden>
<a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links="repo_graphs repo_contributors dependency_graph dependabot_updates pulse people community /vishnubob/wait-for-it/pulse" href="/vishnubob/wait-for-it/pulse">
Insights
</a> </li>
</ul>
</details-menu></div>
</details></div>
</nav>
</div>
<div class="clearfix new-discussion-timeline container-xl px-3 px-md-4 px-lg-5">
<div id="repo-content-pjax-container" class="repository-content " >
<a href="https://github.dev/" class="d-none js-github-dev-shortcut" data-hotkey=".">Open in github.dev</a>
<a href="https://github.dev/" class="d-none js-github-dev-new-tab-shortcut" data-hotkey="Shift+.,Shift+&gt;,&gt;" target="_blank">Open in a new github.dev tab</a>
<div>
<a class="d-none js-permalink-shortcut" data-hotkey="y" href="/vishnubob/wait-for-it/blob/81b1373f17855a4dc21156cfe1694c31d7d1792e/wait-for-it.sh">Permalink</a>
<div class="d-flex flex-items-start flex-shrink-0 pb-3 flex-wrap flex-md-nowrap flex-justify-between flex-md-justify-start">
<div class="position-relative">
<details class="details-reset details-overlay mr-0 mb-0 " id="branch-select-menu">
<summary class="btn css-truncate"
data-hotkey="w"
title="Switch branches or tags">
<svg text="gray" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-branch">
<path fill-rule="evenodd" d="M11.75 2.5a.75.75 0 100 1.5.75.75 0 000-1.5zm-2.25.75a2.25 2.25 0 113 2.122V6A2.5 2.5 0 0110 8.5H6a1 1 0 00-1 1v1.128a2.251 2.251 0 11-1.5 0V5.372a2.25 2.25 0 111.5 0v1.836A2.492 2.492 0 016 7h4a1 1 0 001-1v-.628A2.25 2.25 0 019.5 3.25zM4.25 12a.75.75 0 100 1.5.75.75 0 000-1.5zM3.5 3.25a.75.75 0 111.5 0 .75.75 0 01-1.5 0z"></path>
</svg>
<span class="css-truncate-target" data-menu-button>master</span>
<span class="dropdown-caret"></span>
</summary>
<div class="SelectMenu">
<div class="SelectMenu-modal">
<header class="SelectMenu-header">
<span class="SelectMenu-title">Switch branches/tags</span>
<button class="SelectMenu-closeButton" type="button" data-toggle-for="branch-select-menu"><svg aria-label="Close menu" aria-hidden="false" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
<path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path>
</svg></button>
</header>
<input-demux data-action="tab-container-change:input-demux#storeInput tab-container-changed:input-demux#updateInput">
<tab-container class="d-flex flex-column js-branches-tags-tabs" style="min-height: 0;">
<div class="SelectMenu-filter">
<input data-target="input-demux.source"
id="context-commitish-filter-field"
class="SelectMenu-input form-control"
aria-owns="ref-list-branches"
data-controls-ref-menu-id="ref-list-branches"
autofocus
autocomplete="off"
aria-label="Filter branches/tags"
placeholder="Filter branches/tags"
type="text"
>
</div>
<div class="SelectMenu-tabs" role="tablist" data-target="input-demux.control" >
<button class="SelectMenu-tab" type="button" role="tab" aria-selected="true">Branches</button>
<button class="SelectMenu-tab" type="button" role="tab">Tags</button>
</div>
<div role="tabpanel" id="ref-list-branches" data-filter-placeholder="Filter branches/tags" tabindex="" class="d-flex flex-column flex-auto overflow-auto">
<ref-selector
type="branch"
data-targets="input-demux.sinks"
data-action="
input-entered:ref-selector#inputEntered
tab-selected:ref-selector#tabSelected
focus-list:ref-selector#focusFirstListMember
"
query-endpoint="/vishnubob/wait-for-it/refs"
cache-key="v0:1598136930.0"
current-committish="bWFzdGVy"
default-branch="bWFzdGVy"
name-with-owner="dmlzaG51Ym9iL3dhaXQtZm9yLWl0"
prefetch-on-mouseover
>
<template data-target="ref-selector.fetchFailedTemplate">
<div class="SelectMenu-message" data-index="{{ index }}">Could not load branches</div>
</template>
<template data-target="ref-selector.noMatchTemplate">
<div class="SelectMenu-message">Nothing to show</div>
</template>
<!-- TODO: this max-height is necessary or else the branch list won't scroll. why? -->
<div data-target="ref-selector.listContainer" role="menu" class="SelectMenu-list " style="max-height: 330px" data-pjax="#repo-content-pjax-container">
<div class="SelectMenu-loading pt-3 pb-0 overflow-hidden" aria-label="Menu is loading">
<svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" data-view-component="true" class="anim-rotate">
<circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" />
<path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" />
</svg>
</div>
</div>
<template data-target="ref-selector.itemTemplate">
<a href="https://github.com/vishnubob/wait-for-it/blob/{{ urlEncodedRefName }}/wait-for-it.sh" class="SelectMenu-item" role="menuitemradio" rel="nofollow" aria-checked="{{ isCurrent }}" data-index="{{ index }}">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check">
<path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path>
</svg>
<span class="flex-1 css-truncate css-truncate-overflow {{ isFilteringClass }}">{{ refName }}</span>
<span hidden="{{ isNotDefault }}" class="Label Label--secondary flex-self-start">default</span>
</a>
</template>
<footer class="SelectMenu-footer"><a href="/vishnubob/wait-for-it/branches">View all branches</a></footer>
</ref-selector>
</div>
<div role="tabpanel" id="tags-menu" data-filter-placeholder="Find a tag" tabindex="" hidden class="d-flex flex-column flex-auto overflow-auto">
<ref-selector
type="tag"
data-action="
input-entered:ref-selector#inputEntered
tab-selected:ref-selector#tabSelected
focus-list:ref-selector#focusFirstListMember
"
data-targets="input-demux.sinks"
query-endpoint="/vishnubob/wait-for-it/refs"
cache-key="v0:1598136930.0"
current-committish="bWFzdGVy"
default-branch="bWFzdGVy"
name-with-owner="dmlzaG51Ym9iL3dhaXQtZm9yLWl0"
>
<template data-target="ref-selector.fetchFailedTemplate">
<div class="SelectMenu-message" data-index="{{ index }}">Could not load tags</div>
</template>
<template data-target="ref-selector.noMatchTemplate">
<div class="SelectMenu-message" data-index="{{ index }}">Nothing to show</div>
</template>
<template data-target="ref-selector.itemTemplate">
<a href="https://github.com/vishnubob/wait-for-it/blob/{{ urlEncodedRefName }}/wait-for-it.sh" class="SelectMenu-item" role="menuitemradio" rel="nofollow" aria-checked="{{ isCurrent }}" data-index="{{ index }}">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check">
<path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path>
</svg>
<span class="flex-1 css-truncate css-truncate-overflow {{ isFilteringClass }}">{{ refName }}</span>
<span hidden="{{ isNotDefault }}" class="Label Label--secondary flex-self-start">default</span>
</a>
</template>
<div data-target="ref-selector.listContainer" role="menu" class="SelectMenu-list" style="max-height: 330px" data-pjax="#repo-content-pjax-container">
<div class="SelectMenu-loading pt-3 pb-0 overflow-hidden" aria-label="Menu is loading">
<svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" data-view-component="true" class="anim-rotate">
<circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" />
<path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" />
</svg>
</div>
</div>
<footer class="SelectMenu-footer"><a href="/vishnubob/wait-for-it/tags">View all tags</a></footer>
</ref-selector>
</div>
</tab-container>
</input-demux>
</div>
</div>
</details>
</div>
<h2 id="blob-path" class="breadcrumb flex-auto flex-self-center min-width-0 text-normal mx-2 width-full width-md-auto flex-order-1 flex-md-order-none mt-3 mt-md-0">
<span class="js-repo-root text-bold"><span class="js-path-segment d-inline-block wb-break-all"><a data-pjax="#repo-content-pjax-container" href="/vishnubob/wait-for-it"><span>wait-for-it</span></a></span></span><span class="separator">/</span><strong class="final-path">wait-for-it.sh</strong>
</h2>
<a href="/vishnubob/wait-for-it/find/master"
class="js-pjax-capture-input btn mr-2 d-none d-md-block"
data-pjax
data-hotkey="t">
Go to file
</a>
<details id="blob-more-options-details" data-view-component="true" class="details-overlay details-reset position-relative">
<summary role="button" data-view-component="true" class="btn"> <svg aria-label="More options" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-kebab-horizontal">
<path d="M8 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM1.5 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm13 0a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path>
</svg>
</summary>
<div data-view-component="true"> <ul class="dropdown-menu dropdown-menu-sw">
<li class="d-block d-md-none">
<a class="dropdown-item d-flex flex-items-baseline" data-hydro-click="{&quot;event_type&quot;:&quot;repository.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;FIND_FILE_BUTTON&quot;,&quot;repository_id&quot;:50936918,&quot;originating_url&quot;:&quot;https://github.com/vishnubob/wait-for-it/blob/master/wait-for-it.sh&quot;,&quot;user_id&quot;:12984401}}" data-hydro-click-hmac="5cd136d2017091fe2548ce9ab6245805da8131514877e5243e1be1bbf31e3b82" data-ga-click="Repository, find file, location:repo overview" data-hotkey="t" data-pjax="true" href="/vishnubob/wait-for-it/find/master">
<span class="flex-auto">Go to file</span>
<span class="text-small color-fg-muted" aria-hidden="true">T</span>
</a> </li>
<li data-toggle-for="blob-more-options-details">
<button data-toggle-for="jumpto-line-details-dialog" type="button" data-view-component="true" class="dropdown-item btn-link"> <span class="d-flex flex-items-baseline">
<span class="flex-auto">Go to line</span>
<span class="text-small color-fg-muted" aria-hidden="true">L</span>
</span>
</button> </li>
<li class="dropdown-divider" role="none"></li>
<li>
<clipboard-copy data-toggle-for="blob-more-options-details" aria-label="Copy path" value="wait-for-it.sh" data-view-component="true" class="dropdown-item cursor-pointer">
Copy path
</clipboard-copy> </li>
<li>
<clipboard-copy data-toggle-for="blob-more-options-details" aria-label="Copy permalink" value="https://github.com/vishnubob/wait-for-it/blob/81b1373f17855a4dc21156cfe1694c31d7d1792e/wait-for-it.sh" data-view-component="true" class="dropdown-item cursor-pointer">
<span class="d-flex flex-items-baseline">
<span class="flex-auto">Copy permalink</span>
</span>
</clipboard-copy> </li>
</ul>
</div>
</details> </div>
<div class="Box d-flex flex-column flex-shrink-0 mb-3">
<div class="Box-header Details js-details-container">
<div class="d-flex flex-items-center">
<span class="flex-shrink-0 ml-n1 mr-n1 mt-n1 mb-n1">
<a rel="contributor" data-skip-pjax="true" data-hovercard-type="user" data-hovercard-url="/users/douglas-gibbons/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/douglas-gibbons"><img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/3649128?s=48&amp;v=4" width="24" height="24" alt="@douglas-gibbons" /></a>
</span>
<div class="flex-1 d-flex flex-items-center ml-3 min-width-0">
<div class="css-truncate css-truncate-overflow">
<a class="text-bold Link--primary" rel="contributor" data-hovercard-type="user" data-hovercard-url="/users/douglas-gibbons/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/douglas-gibbons">douglas-gibbons</a>
<span class="markdown-title">
<a data-pjax="true" title="Merge pull request #86 from garethrandall/master
Avoid sending a newline character which confuses servers." class="Link--secondary" href="/vishnubob/wait-for-it/commit/81b1373f17855a4dc21156cfe1694c31d7d1792e">Merge pull request</a> <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="545134428" data-permission-text="Title is private" data-url="https://github.com/vishnubob/wait-for-it/issues/86" data-hovercard-type="pull_request" data-hovercard-url="/vishnubob/wait-for-it/pull/86/hovercard" href="https://github.com/vishnubob/wait-for-it/pull/86">#86</a> <a data-pjax="true" title="Merge pull request #86 from garethrandall/master
Avoid sending a newline character which confuses servers." class="Link--secondary" href="/vishnubob/wait-for-it/commit/81b1373f17855a4dc21156cfe1694c31d7d1792e">from garethrandall/master</a>
</span>
</div>
<span class="hidden-text-expander ml-1 flex-shrink-0">
<button type="button" class="ellipsis-expander js-details-target" aria-expanded="false">&hellip;</button>
</span>
<span class="ml-2">
<include-fragment accept="text/fragment+html" src="/vishnubob/wait-for-it/commit/81b1373f17855a4dc21156cfe1694c31d7d1792e/rollup?direction=e" class="d-inline"></include-fragment>
</span>
</div>
<div class="ml-3 d-flex flex-shrink-0 flex-items-center flex-justify-end color-fg-muted no-wrap">
<span class="d-none d-md-inline">
<span>Latest commit</span>
<a class="text-small text-mono Link--secondary" href="/vishnubob/wait-for-it/commit/81b1373f17855a4dc21156cfe1694c31d7d1792e" data-pjax>81b1373</a>
<span itemprop="dateModified"><relative-time datetime="2020-08-22T23:18:37Z" class="no-wrap">Aug 23, 2020</relative-time></span>
</span>
<a data-pjax href="/vishnubob/wait-for-it/commits/master/wait-for-it.sh" class="ml-3 no-wrap Link--primary no-underline">
<svg text="gray" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-history">
<path fill-rule="evenodd" d="M1.643 3.143L.427 1.927A.25.25 0 000 2.104V5.75c0 .138.112.25.25.25h3.646a.25.25 0 00.177-.427L2.715 4.215a6.5 6.5 0 11-1.18 4.458.75.75 0 10-1.493.154 8.001 8.001 0 101.6-5.684zM7.75 4a.75.75 0 01.75.75v2.992l2.028.812a.75.75 0 01-.557 1.392l-2.5-1A.75.75 0 017 8.25v-3.5A.75.75 0 017.75 4z"></path>
</svg>
<span class="d-none d-sm-inline">
<strong>History</strong>
</span>
</a>
</div>
</div>
<div class="Details-content--hidden ml-5 mt-2"><pre class="mt-2 f6 ws-pre-wrap">Avoid sending a newline character which confuses servers.</pre></div>
</div>
<div class="Box-body d-flex flex-items-center flex-auto border-bottom-0 flex-wrap" >
<details class="details-reset details-overlay details-overlay-dark lh-default color-fg-default float-left mr-3" id="blob_contributors_box">
<summary class="Link--primary">
<svg text="gray" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-people">
<path fill-rule="evenodd" d="M5.5 3.5a2 2 0 100 4 2 2 0 000-4zM2 5.5a3.5 3.5 0 115.898 2.549 5.507 5.507 0 013.034 4.084.75.75 0 11-1.482.235 4.001 4.001 0 00-7.9 0 .75.75 0 01-1.482-.236A5.507 5.507 0 013.102 8.05 3.49 3.49 0 012 5.5zM11 4a.75.75 0 100 1.5 1.5 1.5 0 01.666 2.844.75.75 0 00-.416.672v.352a.75.75 0 00.574.73c1.2.289 2.162 1.2 2.522 2.372a.75.75 0 101.434-.44 5.01 5.01 0 00-2.56-3.012A3 3 0 0011 4z"></path>
</svg>
<strong>8</strong>
contributors
</summary>
<details-dialog
class="Box Box--overlay d-flex flex-column anim-fade-in fast"
aria-label="Users who have contributed to this file"
src="/vishnubob/wait-for-it/contributors-list/master/wait-for-it.sh" preload>
<div class="Box-header">
<button class="Box-btn-octicon btn-octicon float-right" type="button" aria-label="Close dialog" data-close-dialog>
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
<path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path>
</svg>
</button>
<h3 class="Box-title">
Users who have contributed to this file
</h3>
</div>
<include-fragment>
<svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" data-view-component="true" class="my-3 mx-auto d-block anim-rotate">
<circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" />
<path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" />
</svg>
</include-fragment>
</details-dialog>
</details>
<span class="">
<a class="avatar-link" data-hovercard-type="user" data-hovercard-url="/users/scop/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/vishnubob/wait-for-it/commits/master/wait-for-it.sh?author=scop">
<img class="avatar mr-2 avatar-user" src="https://avatars.githubusercontent.com/u/109152?s=48&amp;v=4" width="24" height="24" alt="@scop" />
</a> <a class="avatar-link" data-hovercard-type="user" data-hovercard-url="/users/Silex/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/vishnubob/wait-for-it/commits/master/wait-for-it.sh?author=Silex">
<img class="avatar mr-2 avatar-user" src="https://avatars.githubusercontent.com/u/16015?s=48&amp;v=4" width="24" height="24" alt="@Silex" />
</a> <a class="avatar-link" data-hovercard-type="user" data-hovercard-url="/users/vishnubob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/vishnubob/wait-for-it/commits/master/wait-for-it.sh?author=vishnubob">
<img class="avatar mr-2 avatar-user" src="https://avatars.githubusercontent.com/u/188410?s=48&amp;v=4" width="24" height="24" alt="@vishnubob" />
</a> <a class="avatar-link" data-hovercard-type="user" data-hovercard-url="/users/douglas-gibbons/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/vishnubob/wait-for-it/commits/master/wait-for-it.sh?author=douglas-gibbons">
<img class="avatar mr-2 avatar-user" src="https://avatars.githubusercontent.com/u/3649128?s=48&amp;v=4" width="24" height="24" alt="@douglas-gibbons" />
</a> <a class="avatar-link" data-hovercard-type="user" data-hovercard-url="/users/szczad/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/vishnubob/wait-for-it/commits/master/wait-for-it.sh?author=szczad">
<img class="avatar mr-2 avatar-user" src="https://avatars.githubusercontent.com/u/2914011?s=48&amp;v=4" width="24" height="24" alt="@szczad" />
</a> <a class="avatar-link" data-hovercard-type="user" data-hovercard-url="/users/iturgeon/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/vishnubob/wait-for-it/commits/master/wait-for-it.sh?author=iturgeon">
<img class="avatar mr-2 avatar-user" src="https://avatars.githubusercontent.com/u/73480?s=48&amp;v=4" width="24" height="24" alt="@iturgeon" />
</a> <a class="avatar-link" data-hovercard-type="user" data-hovercard-url="/users/garethrandall/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/vishnubob/wait-for-it/commits/master/wait-for-it.sh?author=garethrandall">
<img class="avatar mr-2 avatar-user" src="https://avatars.githubusercontent.com/u/10127980?s=48&amp;v=4" width="24" height="24" alt="@garethrandall" />
</a> <a class="avatar-link" data-hovercard-type="user" data-hovercard-url="/users/fwoelffel/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/vishnubob/wait-for-it/commits/master/wait-for-it.sh?author=fwoelffel">
<img class="avatar mr-2 avatar-user" src="https://avatars.githubusercontent.com/u/5467696?s=48&amp;v=4" width="24" height="24" alt="@fwoelffel" />
</a>
</span>
</div>
</div>
<div data-target="readme-toc.content" class="Box mt-3 position-relative">
<div
class="Box-header js-blob-header py-2 pr-2 d-flex flex-shrink-0 flex-md-row flex-items-center"
>
<div class="text-mono f6 flex-auto pr-3 flex-order-2 flex-md-order-1">
<span class="file-mode" title="File mode">executable file</span>
<span class="file-info-divider"></span>
182 lines (170 sloc)
<span class="file-info-divider"></span>
5.1 KB
</div>
<div class="d-flex py-1 py-md-0 flex-auto flex-order-1 flex-md-order-2 flex-sm-grow-0 flex-justify-between hide-sm hide-md">
<div class="BtnGroup">
<a href="/vishnubob/wait-for-it/raw/master/wait-for-it.sh" id="raw-url" data-view-component="true" class="btn-sm btn BtnGroup-item"> Raw
</a>
<a href="/vishnubob/wait-for-it/blame/master/wait-for-it.sh" data-hotkey="b" data-view-component="true" class="js-update-url-with-hash btn-sm btn BtnGroup-item"> Blame
</a>
</div>
<div>
<a class="btn-octicon tooltipped tooltipped-nw js-remove-unless-platform"
data-platforms="windows,mac"
href="https://desktop.github.com"
aria-label="Open this file in GitHub Desktop"
data-ga-click="Repository, open with desktop">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-device-desktop">
<path fill-rule="evenodd" d="M1.75 2.5h12.5a.25.25 0 01.25.25v7.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25v-7.5a.25.25 0 01.25-.25zM14.25 1H1.75A1.75 1.75 0 000 2.75v7.5C0 11.216.784 12 1.75 12h3.727c-.1 1.041-.52 1.872-1.292 2.757A.75.75 0 004.75 16h6.5a.75.75 0 00.565-1.243c-.772-.885-1.193-1.716-1.292-2.757h3.727A1.75 1.75 0 0016 10.25v-7.5A1.75 1.75 0 0014.25 1zM9.018 12H6.982a5.72 5.72 0 01-.765 2.5h3.566a5.72 5.72 0 01-.765-2.5z"></path>
</svg>
</a>
<remote-clipboard-copy class="d-inline-block btn-octicon" style="height: 26px" data-src="/vishnubob/wait-for-it/raw/master/wait-for-it.sh" data-action="click:remote-clipboard-copy#remoteCopy">
<span data-target="remote-clipboard-copy.idle"> <span class="tooltipped tooltipped-nw cursor-pointer" data-hydro-click="{&quot;event_type&quot;:&quot;repository.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;COPY_RAW_CONTENTS_BUTTON&quot;,&quot;repository_id&quot;:50936918,&quot;originating_url&quot;:&quot;https://github.com/vishnubob/wait-for-it/blob/master/wait-for-it.sh&quot;,&quot;user_id&quot;:12984401}}" data-hydro-click-hmac="c6368a46501e17429ed630887594bce202f256b6c847bd785c6584d0880ca6ae" aria-label="Copy raw contents">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy">
<path fill-rule="evenodd" d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z"></path><path fill-rule="evenodd" d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z"></path>
</svg>
</span></span>
<span data-target="remote-clipboard-copy.fetching" hidden="hidden"> <svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="16" height="16" viewBox="0 0 16 16" fill="none" data-view-component="true" class="anim-rotate">
<circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" />
<path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" />
</svg>
</span>
<span data-target="remote-clipboard-copy.success" hidden="hidden"> <span class="tooltipped tooltipped-nw" aria-label="Copied!">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check color-fg-success">
<path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path>
</svg>
</span>
</span>
<span data-target="remote-clipboard-copy.error" hidden="hidden"> <span class="tooltipped tooltipped-nw" aria-label="Something went wrong. Try again.">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert color-fg-attention">
<path fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path>
</svg>
</span>
</span>
</remote-clipboard-copy>
<!-- '"` --><!-- </textarea></xmp> --></option></form><form class="inline-form js-update-url-with-hash" action="/vishnubob/wait-for-it/edit/master/wait-for-it.sh" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="Pya0U7tdkgIqpr-nVMmKu2s7kQXXVpOFWrqHkJqTtGlJ2E-n-8e0DRYm7Zc6HMxgG25AkLrMjb37_5_XryZGjw" />
<button class="btn-octicon tooltipped tooltipped-nw" type="submit"
aria-label="Fork this project and edit the file" data-hotkey="e" data-disable-with>
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-pencil">
<path fill-rule="evenodd" d="M11.013 1.427a1.75 1.75 0 012.474 0l1.086 1.086a1.75 1.75 0 010 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 01-.927-.928l.929-3.25a1.75 1.75 0 01.445-.758l8.61-8.61zm1.414 1.06a.25.25 0 00-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 000-.354l-1.086-1.086zM11.189 6.25L9.75 4.81l-6.286 6.287a.25.25 0 00-.064.108l-.558 1.953 1.953-.558a.249.249 0 00.108-.064l6.286-6.286z"></path>
</svg>
</button>
</form>
<!-- '"` --><!-- </textarea></xmp> --></option></form><form class="inline-form" action="/vishnubob/wait-for-it/delete/master/wait-for-it.sh" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="qmcGaC8b1sbJXNRt0H6JHsqdjUT2WKcj6p4aVjiCfQXwKKz1EbhBQ1DhrrEGpYtmdAKYBT9FShkZlj77XtlPJQ" />
<button class="btn-octicon btn-octicon-danger tooltipped tooltipped-nw" type="submit"
aria-label="Fork this project and delete the file" data-disable-with>
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-trash">
<path fill-rule="evenodd" d="M6.5 1.75a.25.25 0 01.25-.25h2.5a.25.25 0 01.25.25V3h-3V1.75zm4.5 0V3h2.25a.75.75 0 010 1.5H2.75a.75.75 0 010-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75zM4.496 6.675a.75.75 0 10-1.492.15l.66 6.6A1.75 1.75 0 005.405 15h5.19c.9 0 1.652-.681 1.741-1.576l.66-6.6a.75.75 0 00-1.492-.149l-.66 6.6a.25.25 0 01-.249.225h-5.19a.25.25 0 01-.249-.225l-.66-6.6z"></path>
</svg>
</button>
</form> </div>
</div>
<div class="d-flex hide-lg hide-xl flex-order-2 flex-grow-0">
<details class="dropdown details-reset details-overlay d-inline-block">
<summary class="btn-octicon" aria-haspopup="true" aria-label="possible actions">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-kebab-horizontal">
<path d="M8 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM1.5 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm13 0a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path>
</svg>
</summary>
<ul class="dropdown-menu dropdown-menu-sw" style="width: 175px">
<li>
<a class="dropdown-item tooltipped tooltipped-nw js-remove-unless-platform"
data-platforms="windows,mac"
href="https://desktop.github.com"
data-ga-click="Repository, open with desktop">
Open with Desktop
</a>
</li>
<li>
<a class="dropdown-item" href="/vishnubob/wait-for-it/raw/master/wait-for-it.sh">
View raw
</a>
</li>
<li>
<remote-clipboard-copy class="dropdown-item" data-src="/vishnubob/wait-for-it/raw/master/wait-for-it.sh" data-action="click:remote-clipboard-copy#remoteCopy">
<span data-target="remote-clipboard-copy.idle"> <span class="cursor-pointer" data-hydro-click="{&quot;event_type&quot;:&quot;repository.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;COPY_RAW_CONTENTS_BUTTON&quot;,&quot;repository_id&quot;:50936918,&quot;originating_url&quot;:&quot;https://github.com/vishnubob/wait-for-it/blob/master/wait-for-it.sh&quot;,&quot;user_id&quot;:12984401}}" data-hydro-click-hmac="c6368a46501e17429ed630887594bce202f256b6c847bd785c6584d0880ca6ae">
Copy raw contents
</span></span>
<span data-target="remote-clipboard-copy.fetching" hidden="hidden"> Copy raw contents
<span class="d-inline-block position-relative" style="top: 3px">
<svg aria-label="fetching contents…" style="box-sizing: content-box; color: var(--color-icon-primary);" width="16" height="16" viewBox="0 0 16 16" fill="none" data-view-component="true" class="anim-rotate">
<circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" />
<path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" />
</svg>
</span>
</span>
<span data-target="remote-clipboard-copy.success" hidden="hidden"> Copy raw contents
<svg aria-label="Copied!" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check color-fg-success">
<path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path>
</svg>
</span>
<span data-target="remote-clipboard-copy.error" hidden="hidden"> Copy raw contents
<svg aria-label="Something went wrong. Try again." role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert color-fg-attention">
<path fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path>
</svg>
</span>
</remote-clipboard-copy> </li>
<li>
<a class="dropdown-item" href="/vishnubob/wait-for-it/blame/master/wait-for-it.sh">
View blame
</a>
</li>
<li class="dropdown-divider" role="none"></li>
<li>
<a class="dropdown-item" href="/vishnubob/wait-for-it/edit/master/wait-for-it.sh">Edit file</a>
</li>
<li>
<a class="dropdown-item menu-item-danger" href="/vishnubob/wait-for-it/delete/master/wait-for-it.sh">Delete file</a>
</li>
</ul>
</details>
</div>
</div>
<div itemprop="text" class="Box-body p-0 blob-wrapper data type-shell gist-border-0">
<div class="js-check-bidi js-blob-code-container blob-code-content">
<template class="js-file-alert-template">
<div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
<path fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path>
</svg>
<span>
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
<a href="https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a>
</span>
<div data-view-component="true" class="flash-action"> <a href="{{ revealButtonHref }}" data-view-component="true" class="btn-sm btn"> Show hidden characters
</a>
</div>
</div></template>
<template class="js-line-alert-template">
<span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
<path fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path>
</svg>
</span></template>
<table class="highlight tab-size js-file-line-container js-code-nav-container js-tagsearch-file" data-tab-size="8" data-paste-markdown-skip data-tagsearch-lang="Shell" data-tagsearch-path="wait-for-it.sh">
<tr>
<td id="L1" class="blob-num js-line-number js-code-nav-line-number" data-line-number="1"></td>
<td id="LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#!</span>/usr/bin/env bash</span></td>
</tr>
<tr>
<td id="L2" class="blob-num js-line-number js-code-nav-line-number" data-line-number="2"></td>
<td id="LC2" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> Use this script to test if a given TCP host/port are available</span></td>
</tr>
<tr>
<td id="L3" class="blob-num js-line-number js-code-nav-line-number" data-line-number="3"></td>
<td id="LC3" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4" class="blob-num js-line-number js-code-nav-line-number" data-line-number="4"></td>
<td id="LC4" class="blob-code blob-code-inner js-file-line">WAITFORIT_cmdname=<span class="pl-smi">${0<span class="pl-k">##*/</span>}</span></td>
</tr>
<tr>
<td id="L5" class="blob-num js-line-number js-code-nav-line-number" data-line-number="5"></td>
<td id="LC5" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6" class="blob-num js-line-number js-code-nav-line-number" data-line-number="6"></td>
<td id="LC6" class="blob-code blob-code-inner js-file-line"><span class="pl-en">echoerr</span>() { <span class="pl-k">if</span> [[ <span class="pl-smi">$WAITFORIT_QUIET</span> <span class="pl-k">-ne</span> 1 ]]<span class="pl-k">;</span> <span class="pl-k">then</span> <span class="pl-c1">echo</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-smi">$@</span><span class="pl-pds">&quot;</span></span> <span class="pl-k">1&gt;&amp;2</span><span class="pl-k">;</span> <span class="pl-k">fi</span> }</td>
</tr>
<tr>
<td id="L7" class="blob-num js-line-number js-code-nav-line-number" data-line-number="7"></td>
<td id="LC7" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8" class="blob-num js-line-number js-code-nav-line-number" data-line-number="8"></td>
<td id="LC8" class="blob-code blob-code-inner js-file-line"><span class="pl-en">usage</span>()</td>
</tr>
<tr>
<td id="L9" class="blob-num js-line-number js-code-nav-line-number" data-line-number="9"></td>
<td id="LC9" class="blob-code blob-code-inner js-file-line">{</td>
</tr>
<tr>
<td id="L10" class="blob-num js-line-number js-code-nav-line-number" data-line-number="10"></td>
<td id="LC10" class="blob-code blob-code-inner js-file-line"> cat <span class="pl-s"><span class="pl-k">&lt;&lt;</span> <span class="pl-k">USAGE</span> &gt;&amp;2</span></td>
</tr>
<tr>
<td id="L11" class="blob-num js-line-number js-code-nav-line-number" data-line-number="11"></td>
<td id="LC11" class="blob-code blob-code-inner js-file-line"><span class="pl-s">Usage:</span></td>
</tr>
<tr>
<td id="L12" class="blob-num js-line-number js-code-nav-line-number" data-line-number="12"></td>
<td id="LC12" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> $WAITFORIT_cmdname host:port [-s] [-t timeout] [-- command args]</span></td>
</tr>
<tr>
<td id="L13" class="blob-num js-line-number js-code-nav-line-number" data-line-number="13"></td>
<td id="LC13" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> -h HOST | --host=HOST Host or IP under test</span></td>
</tr>
<tr>
<td id="L14" class="blob-num js-line-number js-code-nav-line-number" data-line-number="14"></td>
<td id="LC14" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> -p PORT | --port=PORT TCP port under test</span></td>
</tr>
<tr>
<td id="L15" class="blob-num js-line-number js-code-nav-line-number" data-line-number="15"></td>
<td id="LC15" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> Alternatively, you specify the host and port as host:port</span></td>
</tr>
<tr>
<td id="L16" class="blob-num js-line-number js-code-nav-line-number" data-line-number="16"></td>
<td id="LC16" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> -s | --strict Only execute subcommand if the test succeeds</span></td>
</tr>
<tr>
<td id="L17" class="blob-num js-line-number js-code-nav-line-number" data-line-number="17"></td>
<td id="LC17" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> -q | --quiet Don&#39;t output any status messages</span></td>
</tr>
<tr>
<td id="L18" class="blob-num js-line-number js-code-nav-line-number" data-line-number="18"></td>
<td id="LC18" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> -t TIMEOUT | --timeout=TIMEOUT</span></td>
</tr>
<tr>
<td id="L19" class="blob-num js-line-number js-code-nav-line-number" data-line-number="19"></td>
<td id="LC19" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> Timeout in seconds, zero for no timeout</span></td>
</tr>
<tr>
<td id="L20" class="blob-num js-line-number js-code-nav-line-number" data-line-number="20"></td>
<td id="LC20" class="blob-code blob-code-inner js-file-line"><span class="pl-s"> -- COMMAND ARGS Execute command with args after the test finishes</span></td>
</tr>
<tr>
<td id="L21" class="blob-num js-line-number js-code-nav-line-number" data-line-number="21"></td>
<td id="LC21" class="blob-code blob-code-inner js-file-line"><span class="pl-s"><span class="pl-k">USAGE</span></span></td>
</tr>
<tr>
<td id="L22" class="blob-num js-line-number js-code-nav-line-number" data-line-number="22"></td>
<td id="LC22" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">exit</span> 1</td>
</tr>
<tr>
<td id="L23" class="blob-num js-line-number js-code-nav-line-number" data-line-number="23"></td>
<td id="LC23" class="blob-code blob-code-inner js-file-line">}</td>
</tr>
<tr>
<td id="L24" class="blob-num js-line-number js-code-nav-line-number" data-line-number="24"></td>
<td id="LC24" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L25" class="blob-num js-line-number js-code-nav-line-number" data-line-number="25"></td>
<td id="LC25" class="blob-code blob-code-inner js-file-line"><span class="pl-en">wait_for</span>()</td>
</tr>
<tr>
<td id="L26" class="blob-num js-line-number js-code-nav-line-number" data-line-number="26"></td>
<td id="LC26" class="blob-code blob-code-inner js-file-line">{</td>
</tr>
<tr>
<td id="L27" class="blob-num js-line-number js-code-nav-line-number" data-line-number="27"></td>
<td id="LC27" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> [[ <span class="pl-smi">$WAITFORIT_TIMEOUT</span> <span class="pl-k">-gt</span> 0 ]]<span class="pl-k">;</span> <span class="pl-k">then</span></td>
</tr>
<tr>
<td id="L28" class="blob-num js-line-number js-code-nav-line-number" data-line-number="28"></td>
<td id="LC28" class="blob-code blob-code-inner js-file-line"> echoerr <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-smi">$WAITFORIT_cmdname</span>: waiting <span class="pl-smi">$WAITFORIT_TIMEOUT</span> seconds for <span class="pl-smi">$WAITFORIT_HOST</span>:<span class="pl-smi">$WAITFORIT_PORT</span><span class="pl-pds">&quot;</span></span></td>
</tr>
<tr>
<td id="L29" class="blob-num js-line-number js-code-nav-line-number" data-line-number="29"></td>
<td id="LC29" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">else</span></td>
</tr>
<tr>
<td id="L30" class="blob-num js-line-number js-code-nav-line-number" data-line-number="30"></td>
<td id="LC30" class="blob-code blob-code-inner js-file-line"> echoerr <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-smi">$WAITFORIT_cmdname</span>: waiting for <span class="pl-smi">$WAITFORIT_HOST</span>:<span class="pl-smi">$WAITFORIT_PORT</span> without a timeout<span class="pl-pds">&quot;</span></span></td>
</tr>
<tr>
<td id="L31" class="blob-num js-line-number js-code-nav-line-number" data-line-number="31"></td>
<td id="LC31" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">fi</span></td>
</tr>
<tr>
<td id="L32" class="blob-num js-line-number js-code-nav-line-number" data-line-number="32"></td>
<td id="LC32" class="blob-code blob-code-inner js-file-line"> WAITFORIT_start_ts=<span class="pl-s"><span class="pl-pds">$(</span>date +%s<span class="pl-pds">)</span></span></td>
</tr>
<tr>
<td id="L33" class="blob-num js-line-number js-code-nav-line-number" data-line-number="33"></td>
<td id="LC33" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">while</span> <span class="pl-c1">:</span></td>
</tr>
<tr>
<td id="L34" class="blob-num js-line-number js-code-nav-line-number" data-line-number="34"></td>
<td id="LC34" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">do</span></td>
</tr>
<tr>
<td id="L35" class="blob-num js-line-number js-code-nav-line-number" data-line-number="35"></td>
<td id="LC35" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> [[ <span class="pl-smi">$WAITFORIT_ISBUSY</span> <span class="pl-k">-eq</span> 1 ]]<span class="pl-k">;</span> <span class="pl-k">then</span></td>
</tr>
<tr>
<td id="L36" class="blob-num js-line-number js-code-nav-line-number" data-line-number="36"></td>
<td id="LC36" class="blob-code blob-code-inner js-file-line"> nc -z <span class="pl-smi">$WAITFORIT_HOST</span> <span class="pl-smi">$WAITFORIT_PORT</span></td>
</tr>
<tr>
<td id="L37" class="blob-num js-line-number js-code-nav-line-number" data-line-number="37"></td>
<td id="LC37" class="blob-code blob-code-inner js-file-line"> WAITFORIT_result=<span class="pl-smi">$?</span></td>
</tr>
<tr>
<td id="L38" class="blob-num js-line-number js-code-nav-line-number" data-line-number="38"></td>
<td id="LC38" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">else</span></td>
</tr>
<tr>
<td id="L39" class="blob-num js-line-number js-code-nav-line-number" data-line-number="39"></td>
<td id="LC39" class="blob-code blob-code-inner js-file-line"> (echo -n <span class="pl-k">&gt;</span> /dev/tcp/<span class="pl-smi">$WAITFORIT_HOST</span>/<span class="pl-smi">$WAITFORIT_PORT</span>) <span class="pl-k">&gt;</span>/dev/null <span class="pl-k">2&gt;&amp;1</span></td>
</tr>
<tr>
<td id="L40" class="blob-num js-line-number js-code-nav-line-number" data-line-number="40"></td>
<td id="LC40" class="blob-code blob-code-inner js-file-line"> WAITFORIT_result=<span class="pl-smi">$?</span></td>
</tr>
<tr>
<td id="L41" class="blob-num js-line-number js-code-nav-line-number" data-line-number="41"></td>
<td id="LC41" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">fi</span></td>
</tr>
<tr>
<td id="L42" class="blob-num js-line-number js-code-nav-line-number" data-line-number="42"></td>
<td id="LC42" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> [[ <span class="pl-smi">$WAITFORIT_result</span> <span class="pl-k">-eq</span> 0 ]]<span class="pl-k">;</span> <span class="pl-k">then</span></td>
</tr>
<tr>
<td id="L43" class="blob-num js-line-number js-code-nav-line-number" data-line-number="43"></td>
<td id="LC43" class="blob-code blob-code-inner js-file-line"> WAITFORIT_end_ts=<span class="pl-s"><span class="pl-pds">$(</span>date +%s<span class="pl-pds">)</span></span></td>
</tr>
<tr>
<td id="L44" class="blob-num js-line-number js-code-nav-line-number" data-line-number="44"></td>
<td id="LC44" class="blob-code blob-code-inner js-file-line"> echoerr <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-smi">$WAITFORIT_cmdname</span>: <span class="pl-smi">$WAITFORIT_HOST</span>:<span class="pl-smi">$WAITFORIT_PORT</span> is available after <span class="pl-s"><span class="pl-pds">$((</span>WAITFORIT_end_ts <span class="pl-k">-</span> WAITFORIT_start_ts<span class="pl-pds">))</span></span> seconds<span class="pl-pds">&quot;</span></span></td>
</tr>
<tr>
<td id="L45" class="blob-num js-line-number js-code-nav-line-number" data-line-number="45"></td>
<td id="LC45" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">break</span></td>
</tr>
<tr>
<td id="L46" class="blob-num js-line-number js-code-nav-line-number" data-line-number="46"></td>
<td id="LC46" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">fi</span></td>
</tr>
<tr>
<td id="L47" class="blob-num js-line-number js-code-nav-line-number" data-line-number="47"></td>
<td id="LC47" class="blob-code blob-code-inner js-file-line"> sleep 1</td>
</tr>
<tr>
<td id="L48" class="blob-num js-line-number js-code-nav-line-number" data-line-number="48"></td>
<td id="LC48" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">done</span></td>
</tr>
<tr>
<td id="L49" class="blob-num js-line-number js-code-nav-line-number" data-line-number="49"></td>
<td id="LC49" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">$WAITFORIT_result</span></td>
</tr>
<tr>
<td id="L50" class="blob-num js-line-number js-code-nav-line-number" data-line-number="50"></td>
<td id="LC50" class="blob-code blob-code-inner js-file-line">}</td>
</tr>
<tr>
<td id="L51" class="blob-num js-line-number js-code-nav-line-number" data-line-number="51"></td>
<td id="LC51" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L52" class="blob-num js-line-number js-code-nav-line-number" data-line-number="52"></td>
<td id="LC52" class="blob-code blob-code-inner js-file-line"><span class="pl-en">wait_for_wrapper</span>()</td>
</tr>
<tr>
<td id="L53" class="blob-num js-line-number js-code-nav-line-number" data-line-number="53"></td>
<td id="LC53" class="blob-code blob-code-inner js-file-line">{</td>
</tr>
<tr>
<td id="L54" class="blob-num js-line-number js-code-nav-line-number" data-line-number="54"></td>
<td id="LC54" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> In order to support SIGINT during timeout: http://unix.stackexchange.com/a/57692</span></td>
</tr>
<tr>
<td id="L55" class="blob-num js-line-number js-code-nav-line-number" data-line-number="55"></td>
<td id="LC55" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> [[ <span class="pl-smi">$WAITFORIT_QUIET</span> <span class="pl-k">-eq</span> 1 ]]<span class="pl-k">;</span> <span class="pl-k">then</span></td>
</tr>
<tr>
<td id="L56" class="blob-num js-line-number js-code-nav-line-number" data-line-number="56"></td>
<td id="LC56" class="blob-code blob-code-inner js-file-line"> timeout <span class="pl-smi">$WAITFORIT_BUSYTIMEFLAG</span> <span class="pl-smi">$WAITFORIT_TIMEOUT</span> <span class="pl-smi">$0</span> --quiet --child --host=<span class="pl-smi">$WAITFORIT_HOST</span> --port=<span class="pl-smi">$WAITFORIT_PORT</span> --timeout=<span class="pl-smi">$WAITFORIT_TIMEOUT</span> <span class="pl-k">&amp;</span></td>
</tr>
<tr>
<td id="L57" class="blob-num js-line-number js-code-nav-line-number" data-line-number="57"></td>
<td id="LC57" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">else</span></td>
</tr>
<tr>
<td id="L58" class="blob-num js-line-number js-code-nav-line-number" data-line-number="58"></td>
<td id="LC58" class="blob-code blob-code-inner js-file-line"> timeout <span class="pl-smi">$WAITFORIT_BUSYTIMEFLAG</span> <span class="pl-smi">$WAITFORIT_TIMEOUT</span> <span class="pl-smi">$0</span> --child --host=<span class="pl-smi">$WAITFORIT_HOST</span> --port=<span class="pl-smi">$WAITFORIT_PORT</span> --timeout=<span class="pl-smi">$WAITFORIT_TIMEOUT</span> <span class="pl-k">&amp;</span></td>
</tr>
<tr>
<td id="L59" class="blob-num js-line-number js-code-nav-line-number" data-line-number="59"></td>
<td id="LC59" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">fi</span></td>
</tr>
<tr>
<td id="L60" class="blob-num js-line-number js-code-nav-line-number" data-line-number="60"></td>
<td id="LC60" class="blob-code blob-code-inner js-file-line"> WAITFORIT_PID=<span class="pl-smi">$!</span></td>
</tr>
<tr>
<td id="L61" class="blob-num js-line-number js-code-nav-line-number" data-line-number="61"></td>
<td id="LC61" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">trap</span> <span class="pl-s"><span class="pl-pds">&quot;</span>kill -INT -<span class="pl-smi">$WAITFORIT_PID</span><span class="pl-pds">&quot;</span></span> INT</td>
</tr>
<tr>
<td id="L62" class="blob-num js-line-number js-code-nav-line-number" data-line-number="62"></td>
<td id="LC62" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">wait</span> <span class="pl-smi">$WAITFORIT_PID</span></td>
</tr>
<tr>
<td id="L63" class="blob-num js-line-number js-code-nav-line-number" data-line-number="63"></td>
<td id="LC63" class="blob-code blob-code-inner js-file-line"> WAITFORIT_RESULT=<span class="pl-smi">$?</span></td>
</tr>
<tr>
<td id="L64" class="blob-num js-line-number js-code-nav-line-number" data-line-number="64"></td>
<td id="LC64" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> [[ <span class="pl-smi">$WAITFORIT_RESULT</span> <span class="pl-k">-ne</span> 0 ]]<span class="pl-k">;</span> <span class="pl-k">then</span></td>
</tr>
<tr>
<td id="L65" class="blob-num js-line-number js-code-nav-line-number" data-line-number="65"></td>
<td id="LC65" class="blob-code blob-code-inner js-file-line"> echoerr <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-smi">$WAITFORIT_cmdname</span>: timeout occurred after waiting <span class="pl-smi">$WAITFORIT_TIMEOUT</span> seconds for <span class="pl-smi">$WAITFORIT_HOST</span>:<span class="pl-smi">$WAITFORIT_PORT</span><span class="pl-pds">&quot;</span></span></td>
</tr>
<tr>
<td id="L66" class="blob-num js-line-number js-code-nav-line-number" data-line-number="66"></td>
<td id="LC66" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">fi</span></td>
</tr>
<tr>
<td id="L67" class="blob-num js-line-number js-code-nav-line-number" data-line-number="67"></td>
<td id="LC67" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">$WAITFORIT_RESULT</span></td>
</tr>
<tr>
<td id="L68" class="blob-num js-line-number js-code-nav-line-number" data-line-number="68"></td>
<td id="LC68" class="blob-code blob-code-inner js-file-line">}</td>
</tr>
<tr>
<td id="L69" class="blob-num js-line-number js-code-nav-line-number" data-line-number="69"></td>
<td id="LC69" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L70" class="blob-num js-line-number js-code-nav-line-number" data-line-number="70"></td>
<td id="LC70" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> process arguments</span></td>
</tr>
<tr>
<td id="L71" class="blob-num js-line-number js-code-nav-line-number" data-line-number="71"></td>
<td id="LC71" class="blob-code blob-code-inner js-file-line"><span class="pl-k">while</span> [[ <span class="pl-smi">$#</span> <span class="pl-k">-gt</span> 0 ]]</td>
</tr>
<tr>
<td id="L72" class="blob-num js-line-number js-code-nav-line-number" data-line-number="72"></td>
<td id="LC72" class="blob-code blob-code-inner js-file-line"><span class="pl-k">do</span></td>
</tr>
<tr>
<td id="L73" class="blob-num js-line-number js-code-nav-line-number" data-line-number="73"></td>
<td id="LC73" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-smi">$1</span><span class="pl-pds">&quot;</span></span> <span class="pl-k">in</span></td>
</tr>
<tr>
<td id="L74" class="blob-num js-line-number js-code-nav-line-number" data-line-number="74"></td>
<td id="LC74" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">*</span>:<span class="pl-k">*</span> )</td>
</tr>
<tr>
<td id="L75" class="blob-num js-line-number js-code-nav-line-number" data-line-number="75"></td>
<td id="LC75" class="blob-code blob-code-inner js-file-line"> WAITFORIT_hostport=(<span class="pl-smi">${1<span class="pl-k">//:/</span> }</span>)</td>
</tr>
<tr>
<td id="L76" class="blob-num js-line-number js-code-nav-line-number" data-line-number="76"></td>
<td id="LC76" class="blob-code blob-code-inner js-file-line"> WAITFORIT_HOST=<span class="pl-smi">${WAITFORIT_hostport[0]}</span></td>
</tr>
<tr>
<td id="L77" class="blob-num js-line-number js-code-nav-line-number" data-line-number="77"></td>
<td id="LC77" class="blob-code blob-code-inner js-file-line"> WAITFORIT_PORT=<span class="pl-smi">${WAITFORIT_hostport[1]}</span></td>
</tr>
<tr>
<td id="L78" class="blob-num js-line-number js-code-nav-line-number" data-line-number="78"></td>
<td id="LC78" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">shift</span> 1</td>
</tr>
<tr>
<td id="L79" class="blob-num js-line-number js-code-nav-line-number" data-line-number="79"></td>
<td id="LC79" class="blob-code blob-code-inner js-file-line"> ;;</td>
</tr>
<tr>
<td id="L80" class="blob-num js-line-number js-code-nav-line-number" data-line-number="80"></td>
<td id="LC80" class="blob-code blob-code-inner js-file-line"> --child)</td>
</tr>
<tr>
<td id="L81" class="blob-num js-line-number js-code-nav-line-number" data-line-number="81"></td>
<td id="LC81" class="blob-code blob-code-inner js-file-line"> WAITFORIT_CHILD=1</td>
</tr>
<tr>
<td id="L82" class="blob-num js-line-number js-code-nav-line-number" data-line-number="82"></td>
<td id="LC82" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">shift</span> 1</td>
</tr>
<tr>
<td id="L83" class="blob-num js-line-number js-code-nav-line-number" data-line-number="83"></td>
<td id="LC83" class="blob-code blob-code-inner js-file-line"> ;;</td>
</tr>
<tr>
<td id="L84" class="blob-num js-line-number js-code-nav-line-number" data-line-number="84"></td>
<td id="LC84" class="blob-code blob-code-inner js-file-line"> -q | --quiet)</td>
</tr>
<tr>
<td id="L85" class="blob-num js-line-number js-code-nav-line-number" data-line-number="85"></td>
<td id="LC85" class="blob-code blob-code-inner js-file-line"> WAITFORIT_QUIET=1</td>
</tr>
<tr>
<td id="L86" class="blob-num js-line-number js-code-nav-line-number" data-line-number="86"></td>
<td id="LC86" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">shift</span> 1</td>
</tr>
<tr>
<td id="L87" class="blob-num js-line-number js-code-nav-line-number" data-line-number="87"></td>
<td id="LC87" class="blob-code blob-code-inner js-file-line"> ;;</td>
</tr>
<tr>
<td id="L88" class="blob-num js-line-number js-code-nav-line-number" data-line-number="88"></td>
<td id="LC88" class="blob-code blob-code-inner js-file-line"> -s | --strict)</td>
</tr>
<tr>
<td id="L89" class="blob-num js-line-number js-code-nav-line-number" data-line-number="89"></td>
<td id="LC89" class="blob-code blob-code-inner js-file-line"> WAITFORIT_STRICT=1</td>
</tr>
<tr>
<td id="L90" class="blob-num js-line-number js-code-nav-line-number" data-line-number="90"></td>
<td id="LC90" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">shift</span> 1</td>
</tr>
<tr>
<td id="L91" class="blob-num js-line-number js-code-nav-line-number" data-line-number="91"></td>
<td id="LC91" class="blob-code blob-code-inner js-file-line"> ;;</td>
</tr>
<tr>
<td id="L92" class="blob-num js-line-number js-code-nav-line-number" data-line-number="92"></td>
<td id="LC92" class="blob-code blob-code-inner js-file-line"> -h)</td>
</tr>
<tr>
<td id="L93" class="blob-num js-line-number js-code-nav-line-number" data-line-number="93"></td>
<td id="LC93" class="blob-code blob-code-inner js-file-line"> WAITFORIT_HOST=<span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-smi">$2</span><span class="pl-pds">&quot;</span></span></td>
</tr>
<tr>
<td id="L94" class="blob-num js-line-number js-code-nav-line-number" data-line-number="94"></td>
<td id="LC94" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> [[ <span class="pl-smi">$WAITFORIT_HOST</span> <span class="pl-k">==</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-pds">&quot;</span></span> ]]<span class="pl-k">;</span> <span class="pl-k">then</span> <span class="pl-c1">break</span><span class="pl-k">;</span> <span class="pl-k">fi</span></td>
</tr>
<tr>
<td id="L95" class="blob-num js-line-number js-code-nav-line-number" data-line-number="95"></td>
<td id="LC95" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">shift</span> 2</td>
</tr>
<tr>
<td id="L96" class="blob-num js-line-number js-code-nav-line-number" data-line-number="96"></td>
<td id="LC96" class="blob-code blob-code-inner js-file-line"> ;;</td>
</tr>
<tr>
<td id="L97" class="blob-num js-line-number js-code-nav-line-number" data-line-number="97"></td>
<td id="LC97" class="blob-code blob-code-inner js-file-line"> --host=<span class="pl-k">*</span>)</td>
</tr>
<tr>
<td id="L98" class="blob-num js-line-number js-code-nav-line-number" data-line-number="98"></td>
<td id="LC98" class="blob-code blob-code-inner js-file-line"> WAITFORIT_HOST=<span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-smi">${1<span class="pl-k">#*</span>=}</span><span class="pl-pds">&quot;</span></span></td>
</tr>
<tr>
<td id="L99" class="blob-num js-line-number js-code-nav-line-number" data-line-number="99"></td>
<td id="LC99" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">shift</span> 1</td>
</tr>
<tr>
<td id="L100" class="blob-num js-line-number js-code-nav-line-number" data-line-number="100"></td>
<td id="LC100" class="blob-code blob-code-inner js-file-line"> ;;</td>
</tr>
<tr>
<td id="L101" class="blob-num js-line-number js-code-nav-line-number" data-line-number="101"></td>
<td id="LC101" class="blob-code blob-code-inner js-file-line"> -p)</td>
</tr>
<tr>
<td id="L102" class="blob-num js-line-number js-code-nav-line-number" data-line-number="102"></td>
<td id="LC102" class="blob-code blob-code-inner js-file-line"> WAITFORIT_PORT=<span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-smi">$2</span><span class="pl-pds">&quot;</span></span></td>
</tr>
<tr>
<td id="L103" class="blob-num js-line-number js-code-nav-line-number" data-line-number="103"></td>
<td id="LC103" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> [[ <span class="pl-smi">$WAITFORIT_PORT</span> <span class="pl-k">==</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-pds">&quot;</span></span> ]]<span class="pl-k">;</span> <span class="pl-k">then</span> <span class="pl-c1">break</span><span class="pl-k">;</span> <span class="pl-k">fi</span></td>
</tr>
<tr>
<td id="L104" class="blob-num js-line-number js-code-nav-line-number" data-line-number="104"></td>
<td id="LC104" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">shift</span> 2</td>
</tr>
<tr>
<td id="L105" class="blob-num js-line-number js-code-nav-line-number" data-line-number="105"></td>
<td id="LC105" class="blob-code blob-code-inner js-file-line"> ;;</td>
</tr>
<tr>
<td id="L106" class="blob-num js-line-number js-code-nav-line-number" data-line-number="106"></td>
<td id="LC106" class="blob-code blob-code-inner js-file-line"> --port=<span class="pl-k">*</span>)</td>
</tr>
<tr>
<td id="L107" class="blob-num js-line-number js-code-nav-line-number" data-line-number="107"></td>
<td id="LC107" class="blob-code blob-code-inner js-file-line"> WAITFORIT_PORT=<span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-smi">${1<span class="pl-k">#*</span>=}</span><span class="pl-pds">&quot;</span></span></td>
</tr>
<tr>
<td id="L108" class="blob-num js-line-number js-code-nav-line-number" data-line-number="108"></td>
<td id="LC108" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">shift</span> 1</td>
</tr>
<tr>
<td id="L109" class="blob-num js-line-number js-code-nav-line-number" data-line-number="109"></td>
<td id="LC109" class="blob-code blob-code-inner js-file-line"> ;;</td>
</tr>
<tr>
<td id="L110" class="blob-num js-line-number js-code-nav-line-number" data-line-number="110"></td>
<td id="LC110" class="blob-code blob-code-inner js-file-line"> -t)</td>
</tr>
<tr>
<td id="L111" class="blob-num js-line-number js-code-nav-line-number" data-line-number="111"></td>
<td id="LC111" class="blob-code blob-code-inner js-file-line"> WAITFORIT_TIMEOUT=<span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-smi">$2</span><span class="pl-pds">&quot;</span></span></td>
</tr>
<tr>
<td id="L112" class="blob-num js-line-number js-code-nav-line-number" data-line-number="112"></td>
<td id="LC112" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> [[ <span class="pl-smi">$WAITFORIT_TIMEOUT</span> <span class="pl-k">==</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-pds">&quot;</span></span> ]]<span class="pl-k">;</span> <span class="pl-k">then</span> <span class="pl-c1">break</span><span class="pl-k">;</span> <span class="pl-k">fi</span></td>
</tr>
<tr>
<td id="L113" class="blob-num js-line-number js-code-nav-line-number" data-line-number="113"></td>
<td id="LC113" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">shift</span> 2</td>
</tr>
<tr>
<td id="L114" class="blob-num js-line-number js-code-nav-line-number" data-line-number="114"></td>
<td id="LC114" class="blob-code blob-code-inner js-file-line"> ;;</td>
</tr>
<tr>
<td id="L115" class="blob-num js-line-number js-code-nav-line-number" data-line-number="115"></td>
<td id="LC115" class="blob-code blob-code-inner js-file-line"> --timeout=<span class="pl-k">*</span>)</td>
</tr>
<tr>
<td id="L116" class="blob-num js-line-number js-code-nav-line-number" data-line-number="116"></td>
<td id="LC116" class="blob-code blob-code-inner js-file-line"> WAITFORIT_TIMEOUT=<span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-smi">${1<span class="pl-k">#*</span>=}</span><span class="pl-pds">&quot;</span></span></td>
</tr>
<tr>
<td id="L117" class="blob-num js-line-number js-code-nav-line-number" data-line-number="117"></td>
<td id="LC117" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">shift</span> 1</td>
</tr>
<tr>
<td id="L118" class="blob-num js-line-number js-code-nav-line-number" data-line-number="118"></td>
<td id="LC118" class="blob-code blob-code-inner js-file-line"> ;;</td>
</tr>
<tr>
<td id="L119" class="blob-num js-line-number js-code-nav-line-number" data-line-number="119"></td>
<td id="LC119" class="blob-code blob-code-inner js-file-line"> --)</td>
</tr>
<tr>
<td id="L120" class="blob-num js-line-number js-code-nav-line-number" data-line-number="120"></td>
<td id="LC120" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">shift</span></td>
</tr>
<tr>
<td id="L121" class="blob-num js-line-number js-code-nav-line-number" data-line-number="121"></td>
<td id="LC121" class="blob-code blob-code-inner js-file-line"> WAITFORIT_CLI=(<span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-smi">$@</span><span class="pl-pds">&quot;</span></span>)</td>
</tr>
<tr>
<td id="L122" class="blob-num js-line-number js-code-nav-line-number" data-line-number="122"></td>
<td id="LC122" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">break</span></td>
</tr>
<tr>
<td id="L123" class="blob-num js-line-number js-code-nav-line-number" data-line-number="123"></td>
<td id="LC123" class="blob-code blob-code-inner js-file-line"> ;;</td>
</tr>
<tr>
<td id="L124" class="blob-num js-line-number js-code-nav-line-number" data-line-number="124"></td>
<td id="LC124" class="blob-code blob-code-inner js-file-line"> --help)</td>
</tr>
<tr>
<td id="L125" class="blob-num js-line-number js-code-nav-line-number" data-line-number="125"></td>
<td id="LC125" class="blob-code blob-code-inner js-file-line"> usage</td>
</tr>
<tr>
<td id="L126" class="blob-num js-line-number js-code-nav-line-number" data-line-number="126"></td>
<td id="LC126" class="blob-code blob-code-inner js-file-line"> ;;</td>
</tr>
<tr>
<td id="L127" class="blob-num js-line-number js-code-nav-line-number" data-line-number="127"></td>
<td id="LC127" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">*</span>)</td>
</tr>
<tr>
<td id="L128" class="blob-num js-line-number js-code-nav-line-number" data-line-number="128"></td>
<td id="LC128" class="blob-code blob-code-inner js-file-line"> echoerr <span class="pl-s"><span class="pl-pds">&quot;</span>Unknown argument: <span class="pl-smi">$1</span><span class="pl-pds">&quot;</span></span></td>
</tr>
<tr>
<td id="L129" class="blob-num js-line-number js-code-nav-line-number" data-line-number="129"></td>
<td id="LC129" class="blob-code blob-code-inner js-file-line"> usage</td>
</tr>
<tr>
<td id="L130" class="blob-num js-line-number js-code-nav-line-number" data-line-number="130"></td>
<td id="LC130" class="blob-code blob-code-inner js-file-line"> ;;</td>
</tr>
<tr>
<td id="L131" class="blob-num js-line-number js-code-nav-line-number" data-line-number="131"></td>
<td id="LC131" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">esac</span></td>
</tr>
<tr>
<td id="L132" class="blob-num js-line-number js-code-nav-line-number" data-line-number="132"></td>
<td id="LC132" class="blob-code blob-code-inner js-file-line"><span class="pl-k">done</span></td>
</tr>
<tr>
<td id="L133" class="blob-num js-line-number js-code-nav-line-number" data-line-number="133"></td>
<td id="LC133" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L134" class="blob-num js-line-number js-code-nav-line-number" data-line-number="134"></td>
<td id="LC134" class="blob-code blob-code-inner js-file-line"><span class="pl-k">if</span> [[ <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-smi">$WAITFORIT_HOST</span><span class="pl-pds">&quot;</span></span> <span class="pl-k">==</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-pds">&quot;</span></span> <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-smi">$WAITFORIT_PORT</span><span class="pl-pds">&quot;</span></span> <span class="pl-k">==</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-pds">&quot;</span></span> ]]<span class="pl-k">;</span> <span class="pl-k">then</span></td>
</tr>
<tr>
<td id="L135" class="blob-num js-line-number js-code-nav-line-number" data-line-number="135"></td>
<td id="LC135" class="blob-code blob-code-inner js-file-line"> echoerr <span class="pl-s"><span class="pl-pds">&quot;</span>Error: you need to provide a host and port to test.<span class="pl-pds">&quot;</span></span></td>
</tr>
<tr>
<td id="L136" class="blob-num js-line-number js-code-nav-line-number" data-line-number="136"></td>
<td id="LC136" class="blob-code blob-code-inner js-file-line"> usage</td>
</tr>
<tr>
<td id="L137" class="blob-num js-line-number js-code-nav-line-number" data-line-number="137"></td>
<td id="LC137" class="blob-code blob-code-inner js-file-line"><span class="pl-k">fi</span></td>
</tr>
<tr>
<td id="L138" class="blob-num js-line-number js-code-nav-line-number" data-line-number="138"></td>
<td id="LC138" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L139" class="blob-num js-line-number js-code-nav-line-number" data-line-number="139"></td>
<td id="LC139" class="blob-code blob-code-inner js-file-line">WAITFORIT_TIMEOUT=<span class="pl-smi">${WAITFORIT_TIMEOUT<span class="pl-k">:-</span>15}</span></td>
</tr>
<tr>
<td id="L140" class="blob-num js-line-number js-code-nav-line-number" data-line-number="140"></td>
<td id="LC140" class="blob-code blob-code-inner js-file-line">WAITFORIT_STRICT=<span class="pl-smi">${WAITFORIT_STRICT<span class="pl-k">:-</span>0}</span></td>
</tr>
<tr>
<td id="L141" class="blob-num js-line-number js-code-nav-line-number" data-line-number="141"></td>
<td id="LC141" class="blob-code blob-code-inner js-file-line">WAITFORIT_CHILD=<span class="pl-smi">${WAITFORIT_CHILD<span class="pl-k">:-</span>0}</span></td>
</tr>
<tr>
<td id="L142" class="blob-num js-line-number js-code-nav-line-number" data-line-number="142"></td>
<td id="LC142" class="blob-code blob-code-inner js-file-line">WAITFORIT_QUIET=<span class="pl-smi">${WAITFORIT_QUIET<span class="pl-k">:-</span>0}</span></td>
</tr>
<tr>
<td id="L143" class="blob-num js-line-number js-code-nav-line-number" data-line-number="143"></td>
<td id="LC143" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L144" class="blob-num js-line-number js-code-nav-line-number" data-line-number="144"></td>
<td id="LC144" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">#</span> Check to see if timeout is from busybox?</span></td>
</tr>
<tr>
<td id="L145" class="blob-num js-line-number js-code-nav-line-number" data-line-number="145"></td>
<td id="LC145" class="blob-code blob-code-inner js-file-line">WAITFORIT_TIMEOUT_PATH=<span class="pl-s"><span class="pl-pds">$(</span>type -p timeout<span class="pl-pds">)</span></span></td>
</tr>
<tr>
<td id="L146" class="blob-num js-line-number js-code-nav-line-number" data-line-number="146"></td>
<td id="LC146" class="blob-code blob-code-inner js-file-line">WAITFORIT_TIMEOUT_PATH=<span class="pl-s"><span class="pl-pds">$(</span>realpath <span class="pl-smi">$WAITFORIT_TIMEOUT_PATH</span> <span class="pl-k">2&gt;</span>/dev/null <span class="pl-k">||</span> readlink -f <span class="pl-smi">$WAITFORIT_TIMEOUT_PATH</span><span class="pl-pds">)</span></span></td>
</tr>
<tr>
<td id="L147" class="blob-num js-line-number js-code-nav-line-number" data-line-number="147"></td>
<td id="LC147" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L148" class="blob-num js-line-number js-code-nav-line-number" data-line-number="148"></td>
<td id="LC148" class="blob-code blob-code-inner js-file-line">WAITFORIT_BUSYTIMEFLAG=<span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-pds">&quot;</span></span></td>
</tr>
<tr>
<td id="L149" class="blob-num js-line-number js-code-nav-line-number" data-line-number="149"></td>
<td id="LC149" class="blob-code blob-code-inner js-file-line"><span class="pl-k">if</span> [[ <span class="pl-smi">$WAITFORIT_TIMEOUT_PATH</span> <span class="pl-k">=~</span> <span class="pl-s"><span class="pl-pds">&quot;</span>busybox<span class="pl-pds">&quot;</span></span> ]]<span class="pl-k">;</span> <span class="pl-k">then</span></td>
</tr>
<tr>
<td id="L150" class="blob-num js-line-number js-code-nav-line-number" data-line-number="150"></td>
<td id="LC150" class="blob-code blob-code-inner js-file-line"> WAITFORIT_ISBUSY=1</td>
</tr>
<tr>
<td id="L151" class="blob-num js-line-number js-code-nav-line-number" data-line-number="151"></td>
<td id="LC151" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> Check if busybox timeout uses -t flag</span></td>
</tr>
<tr>
<td id="L152" class="blob-num js-line-number js-code-nav-line-number" data-line-number="152"></td>
<td id="LC152" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">#</span> (recent Alpine versions don&#39;t support -t anymore)</span></td>
</tr>
<tr>
<td id="L153" class="blob-num js-line-number js-code-nav-line-number" data-line-number="153"></td>
<td id="LC153" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> timeout <span class="pl-k">&amp;</span><span class="pl-k">&gt;</span>/dev/stdout <span class="pl-k">|</span> grep -q -e <span class="pl-s"><span class="pl-pds">&#39;</span>-t <span class="pl-pds">&#39;</span></span><span class="pl-k">;</span> <span class="pl-k">then</span></td>
</tr>
<tr>
<td id="L154" class="blob-num js-line-number js-code-nav-line-number" data-line-number="154"></td>
<td id="LC154" class="blob-code blob-code-inner js-file-line"> WAITFORIT_BUSYTIMEFLAG=<span class="pl-s"><span class="pl-pds">&quot;</span>-t<span class="pl-pds">&quot;</span></span></td>
</tr>
<tr>
<td id="L155" class="blob-num js-line-number js-code-nav-line-number" data-line-number="155"></td>
<td id="LC155" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">fi</span></td>
</tr>
<tr>
<td id="L156" class="blob-num js-line-number js-code-nav-line-number" data-line-number="156"></td>
<td id="LC156" class="blob-code blob-code-inner js-file-line"><span class="pl-k">else</span></td>
</tr>
<tr>
<td id="L157" class="blob-num js-line-number js-code-nav-line-number" data-line-number="157"></td>
<td id="LC157" class="blob-code blob-code-inner js-file-line"> WAITFORIT_ISBUSY=0</td>
</tr>
<tr>
<td id="L158" class="blob-num js-line-number js-code-nav-line-number" data-line-number="158"></td>
<td id="LC158" class="blob-code blob-code-inner js-file-line"><span class="pl-k">fi</span></td>
</tr>
<tr>
<td id="L159" class="blob-num js-line-number js-code-nav-line-number" data-line-number="159"></td>
<td id="LC159" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L160" class="blob-num js-line-number js-code-nav-line-number" data-line-number="160"></td>
<td id="LC160" class="blob-code blob-code-inner js-file-line"><span class="pl-k">if</span> [[ <span class="pl-smi">$WAITFORIT_CHILD</span> <span class="pl-k">-gt</span> 0 ]]<span class="pl-k">;</span> <span class="pl-k">then</span></td>
</tr>
<tr>
<td id="L161" class="blob-num js-line-number js-code-nav-line-number" data-line-number="161"></td>
<td id="LC161" class="blob-code blob-code-inner js-file-line"> wait_for</td>
</tr>
<tr>
<td id="L162" class="blob-num js-line-number js-code-nav-line-number" data-line-number="162"></td>
<td id="LC162" class="blob-code blob-code-inner js-file-line"> WAITFORIT_RESULT=<span class="pl-smi">$?</span></td>
</tr>
<tr>
<td id="L163" class="blob-num js-line-number js-code-nav-line-number" data-line-number="163"></td>
<td id="LC163" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">exit</span> <span class="pl-smi">$WAITFORIT_RESULT</span></td>
</tr>
<tr>
<td id="L164" class="blob-num js-line-number js-code-nav-line-number" data-line-number="164"></td>
<td id="LC164" class="blob-code blob-code-inner js-file-line"><span class="pl-k">else</span></td>
</tr>
<tr>
<td id="L165" class="blob-num js-line-number js-code-nav-line-number" data-line-number="165"></td>
<td id="LC165" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> [[ <span class="pl-smi">$WAITFORIT_TIMEOUT</span> <span class="pl-k">-gt</span> 0 ]]<span class="pl-k">;</span> <span class="pl-k">then</span></td>
</tr>
<tr>
<td id="L166" class="blob-num js-line-number js-code-nav-line-number" data-line-number="166"></td>
<td id="LC166" class="blob-code blob-code-inner js-file-line"> wait_for_wrapper</td>
</tr>
<tr>
<td id="L167" class="blob-num js-line-number js-code-nav-line-number" data-line-number="167"></td>
<td id="LC167" class="blob-code blob-code-inner js-file-line"> WAITFORIT_RESULT=<span class="pl-smi">$?</span></td>
</tr>
<tr>
<td id="L168" class="blob-num js-line-number js-code-nav-line-number" data-line-number="168"></td>
<td id="LC168" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">else</span></td>
</tr>
<tr>
<td id="L169" class="blob-num js-line-number js-code-nav-line-number" data-line-number="169"></td>
<td id="LC169" class="blob-code blob-code-inner js-file-line"> wait_for</td>
</tr>
<tr>
<td id="L170" class="blob-num js-line-number js-code-nav-line-number" data-line-number="170"></td>
<td id="LC170" class="blob-code blob-code-inner js-file-line"> WAITFORIT_RESULT=<span class="pl-smi">$?</span></td>
</tr>
<tr>
<td id="L171" class="blob-num js-line-number js-code-nav-line-number" data-line-number="171"></td>
<td id="LC171" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">fi</span></td>
</tr>
<tr>
<td id="L172" class="blob-num js-line-number js-code-nav-line-number" data-line-number="172"></td>
<td id="LC172" class="blob-code blob-code-inner js-file-line"><span class="pl-k">fi</span></td>
</tr>
<tr>
<td id="L173" class="blob-num js-line-number js-code-nav-line-number" data-line-number="173"></td>
<td id="LC173" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L174" class="blob-num js-line-number js-code-nav-line-number" data-line-number="174"></td>
<td id="LC174" class="blob-code blob-code-inner js-file-line"><span class="pl-k">if</span> [[ <span class="pl-smi">$WAITFORIT_CLI</span> <span class="pl-k">!=</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-pds">&quot;</span></span> ]]<span class="pl-k">;</span> <span class="pl-k">then</span></td>
</tr>
<tr>
<td id="L175" class="blob-num js-line-number js-code-nav-line-number" data-line-number="175"></td>
<td id="LC175" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> [[ <span class="pl-smi">$WAITFORIT_RESULT</span> <span class="pl-k">-ne</span> 0 <span class="pl-k">&amp;&amp;</span> <span class="pl-smi">$WAITFORIT_STRICT</span> <span class="pl-k">-eq</span> 1 ]]<span class="pl-k">;</span> <span class="pl-k">then</span></td>
</tr>
<tr>
<td id="L176" class="blob-num js-line-number js-code-nav-line-number" data-line-number="176"></td>
<td id="LC176" class="blob-code blob-code-inner js-file-line"> echoerr <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-smi">$WAITFORIT_cmdname</span>: strict mode, refusing to execute subprocess<span class="pl-pds">&quot;</span></span></td>
</tr>
<tr>
<td id="L177" class="blob-num js-line-number js-code-nav-line-number" data-line-number="177"></td>
<td id="LC177" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">exit</span> <span class="pl-smi">$WAITFORIT_RESULT</span></td>
</tr>
<tr>
<td id="L178" class="blob-num js-line-number js-code-nav-line-number" data-line-number="178"></td>
<td id="LC178" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">fi</span></td>
</tr>
<tr>
<td id="L179" class="blob-num js-line-number js-code-nav-line-number" data-line-number="179"></td>
<td id="LC179" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">exec</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-smi">${WAITFORIT_CLI[@]}</span><span class="pl-pds">&quot;</span></span></td>
</tr>
<tr>
<td id="L180" class="blob-num js-line-number js-code-nav-line-number" data-line-number="180"></td>
<td id="LC180" class="blob-code blob-code-inner js-file-line"><span class="pl-k">else</span></td>
</tr>
<tr>
<td id="L181" class="blob-num js-line-number js-code-nav-line-number" data-line-number="181"></td>
<td id="LC181" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">exit</span> <span class="pl-smi">$WAITFORIT_RESULT</span></td>
</tr>
<tr>
<td id="L182" class="blob-num js-line-number js-code-nav-line-number" data-line-number="182"></td>
<td id="LC182" class="blob-code blob-code-inner js-file-line"><span class="pl-k">fi</span></td>
</tr>
</table>
</div>
<details class="details-reset details-overlay BlobToolbar position-absolute js-file-line-actions dropdown d-none" aria-hidden="true">
<summary class="btn-octicon ml-0 px-2 p-0 color-bg-default border color-border-default rounded-1" aria-label="Inline file action toolbar">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-kebab-horizontal">
<path d="M8 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM1.5 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm13 0a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path>
</svg>
</summary>
<details-menu>
<ul class="BlobToolbar-dropdown dropdown-menu dropdown-menu-se ml-2 mt-2"
style="width:185px"
>
<li>
<clipboard-copy role="menuitem" class="dropdown-item" id="js-copy-lines" style="cursor:pointer;" aria-label="Copy lines">
Copy lines
</clipboard-copy>
</li>
<li>
<clipboard-copy role="menuitem" class="dropdown-item" id="js-copy-permalink" style="cursor:pointer;" aria-label="Copy permalink">
Copy permalink
</clipboard-copy>
</li>
<li><a class="dropdown-item js-update-url-with-hash" id="js-view-git-blame" role="menuitem" href="/vishnubob/wait-for-it/blame/81b1373f17855a4dc21156cfe1694c31d7d1792e/wait-for-it.sh">View git blame</a></li>
<li><a class="dropdown-item" id="js-new-issue" role="menuitem" href="/vishnubob/wait-for-it/issues/new">Reference in new issue</a></li>
</ul>
</details-menu>
</details>
</div>
</div>
<details class="details-reset details-overlay details-overlay-dark" id="jumpto-line-details-dialog">
<summary data-hotkey="l" aria-label="Jump to line"></summary>
<details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast linejump" aria-label="Jump to line">
<!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-jump-to-line-form Box-body d-flex" action="" accept-charset="UTF-8" method="get">
<input class="form-control flex-auto mr-3 linejump-input js-jump-to-line-field" type="text" placeholder="Jump to line&hellip;" aria-label="Jump to line" autofocus>
<button data-close-dialog="" type="submit" data-view-component="true" class="btn"> Go
</button>
</form> </details-dialog>
</details>
</div>
</div>
</div>
</main>
</div>
</div>
<footer class="footer width-full container-xl p-responsive" role="contentinfo">
<div class="position-relative d-flex flex-items-center pb-2 f6 color-fg-muted border-top color-border-muted flex-column-reverse flex-lg-row flex-wrap flex-lg-nowrap mt-6 pt-6">
<ul class="list-style-none d-flex flex-wrap col-0 col-lg-2 flex-justify-start flex-lg-justify-between mb-2 mb-lg-0">
<li class="mt-2 mt-lg-0 d-flex flex-items-center">
<a aria-label="Homepage" title="GitHub" class="footer-octicon mr-2" href="https://github.com">
<svg aria-hidden="true" height="24" viewBox="0 0 16 16" version="1.1" width="24" data-view-component="true" class="octicon octicon-mark-github">
<path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path>
</svg>
</a> <span>
&copy; 2022 GitHub, Inc.
</span>
</li>
</ul>
<ul class="list-style-none d-flex flex-wrap col-12 col-lg-8 flex-justify-center flex-lg-justify-between mb-2 mb-lg-0">
<li class="mr-3 mr-lg-0"><a href="https://docs.github.com/en/github/site-policy/github-terms-of-service" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to terms&quot;,&quot;label&quot;:&quot;text:terms&quot;,&quot;originating_url&quot;:&quot;https://github.com/vishnubob/wait-for-it/blob/master/wait-for-it.sh&quot;,&quot;user_id&quot;:12984401}}" data-hydro-click-hmac="75c87e7cfc0ad3e6018d2df19f7f42968c98ffc0e4442fb881074027eff4a7de" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to terms&quot;,&quot;label&quot;:&quot;text:terms&quot;}">Terms</a></li>
<li class="mr-3 mr-lg-0"><a href="https://docs.github.com/en/github/site-policy/github-privacy-statement" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to privacy&quot;,&quot;label&quot;:&quot;text:privacy&quot;,&quot;originating_url&quot;:&quot;https://github.com/vishnubob/wait-for-it/blob/master/wait-for-it.sh&quot;,&quot;user_id&quot;:12984401}}" data-hydro-click-hmac="e92f7d5628fea43c0ca11e9e4c5e0eec901d3f352bbf72449adcce371c83bdd2" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to privacy&quot;,&quot;label&quot;:&quot;text:privacy&quot;}">Privacy</a></li>
<li class="mr-3 mr-lg-0"><a data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to security&quot;,&quot;label&quot;:&quot;text:security&quot;,&quot;originating_url&quot;:&quot;https://github.com/vishnubob/wait-for-it/blob/master/wait-for-it.sh&quot;,&quot;user_id&quot;:12984401}}" data-hydro-click-hmac="5d6ff741e2a0c6a340becf6fccb87a8dc458f698f1b9e431960caef1762d7399" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to security&quot;,&quot;label&quot;:&quot;text:security&quot;}" href="https://github.com/security">Security</a></li>
<li class="mr-3 mr-lg-0"><a href="https://www.githubstatus.com/" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to status&quot;,&quot;label&quot;:&quot;text:status&quot;,&quot;originating_url&quot;:&quot;https://github.com/vishnubob/wait-for-it/blob/master/wait-for-it.sh&quot;,&quot;user_id&quot;:12984401}}" data-hydro-click-hmac="d839dbd069459b866c18fd86239abfe7de3fad89fdf44a664263c03e3ef7d8b6" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to status&quot;,&quot;label&quot;:&quot;text:status&quot;}">Status</a></li>
<li class="mr-3 mr-lg-0"><a data-ga-click="Footer, go to help, text:Docs" href="https://docs.github.com">Docs</a></li>
<li class="mr-3 mr-lg-0"><a href="https://support.github.com?tags=dotcom-footer" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to contact&quot;,&quot;label&quot;:&quot;text:contact&quot;,&quot;originating_url&quot;:&quot;https://github.com/vishnubob/wait-for-it/blob/master/wait-for-it.sh&quot;,&quot;user_id&quot;:12984401}}" data-hydro-click-hmac="b1205f014ea69a1879e2fadaa9c2f9d8c4f4d0dd71c5d0d050027bc956bef576" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to contact&quot;,&quot;label&quot;:&quot;text:contact&quot;}">Contact GitHub</a></li>
<li class="mr-3 mr-lg-0"><a href="https://github.com/pricing" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to Pricing&quot;,&quot;label&quot;:&quot;text:Pricing&quot;,&quot;originating_url&quot;:&quot;https://github.com/vishnubob/wait-for-it/blob/master/wait-for-it.sh&quot;,&quot;user_id&quot;:12984401}}" data-hydro-click-hmac="555cfb1a0665cb9b331d5ace9ccb923bba0c5c918d7883f84a7159416ddfaf50" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to Pricing&quot;,&quot;label&quot;:&quot;text:Pricing&quot;}">Pricing</a></li>
<li class="mr-3 mr-lg-0"><a href="https://docs.github.com" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to api&quot;,&quot;label&quot;:&quot;text:api&quot;,&quot;originating_url&quot;:&quot;https://github.com/vishnubob/wait-for-it/blob/master/wait-for-it.sh&quot;,&quot;user_id&quot;:12984401}}" data-hydro-click-hmac="2b630029a617ffc4c47b0a674619c3d00c0aa5b8d0a832c86f7c7fbc9c985920" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to api&quot;,&quot;label&quot;:&quot;text:api&quot;}">API</a></li>
<li class="mr-3 mr-lg-0"><a href="https://services.github.com" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to training&quot;,&quot;label&quot;:&quot;text:training&quot;,&quot;originating_url&quot;:&quot;https://github.com/vishnubob/wait-for-it/blob/master/wait-for-it.sh&quot;,&quot;user_id&quot;:12984401}}" data-hydro-click-hmac="1b82ef714e9cd5ffab00937ce86d17bfeca76e57968fd47e2f31d07965a513bd" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to training&quot;,&quot;label&quot;:&quot;text:training&quot;}">Training</a></li>
<li class="mr-3 mr-lg-0"><a href="https://github.blog" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to blog&quot;,&quot;label&quot;:&quot;text:blog&quot;,&quot;originating_url&quot;:&quot;https://github.com/vishnubob/wait-for-it/blob/master/wait-for-it.sh&quot;,&quot;user_id&quot;:12984401}}" data-hydro-click-hmac="61b6d9361f08bf7d44711d50d20f71b9288f44002714b0b53fbc37fb2ce8caf1" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to blog&quot;,&quot;label&quot;:&quot;text:blog&quot;}">Blog</a></li>
<li><a data-ga-click="Footer, go to about, text:about" href="https://github.com/about">About</a></li>
</ul>
</div>
<div class="d-flex flex-justify-center pb-6">
<span class="f6 color-fg-muted"></span>
</div>
</footer>
<div id="ajax-error-message" class="ajax-error-message flash flash-error" hidden>
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
<path fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path>
</svg>
<button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
<path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path>
</svg>
</button>
You can’t perform that action at this time.
</div>
<div class="js-stale-session-flash flash flash-warn flash-banner" hidden
>
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
<path fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path>
</svg>
<span class="js-stale-session-flash-signed-in" hidden>You signed in with another tab or window. <a href="">Reload</a> to refresh your session.</span>
<span class="js-stale-session-flash-signed-out" hidden>You signed out in another tab or window. <a href="">Reload</a> to refresh your session.</span>
</div>
<template id="site-details-dialog">
<details class="details-reset details-overlay details-overlay-dark lh-default color-fg-default hx_rsm" open>
<summary role="button" aria-label="Close dialog"></summary>
<details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast hx_rsm-dialog hx_rsm-modal" aria-labelledby="box-title">
<button class="Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type="button" aria-label="Close dialog" data-close-dialog>
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
<path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path>
</svg>
</button>
<div class="octocat-spinner my-6 js-details-dialog-spinner"></div>
</details-dialog>
</details>
</template>
<div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;" tabindex="0">
<div class="Popover-message Popover-message--bottom-left Popover-message--large Box color-shadow-large" style="width:360px;">
</div>
</div>
<template id="snippet-clipboard-copy-button">
<div class="zeroclipboard-container position-absolute right-0 top-0">
<clipboard-copy aria-label="Copy" class="ClipboardButton btn js-clipboard-copy m-2 p-0 tooltipped-no-delay" data-copy-feedback="Copied!" data-tooltip-direction="w">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon m-2">
<path fill-rule="evenodd" d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z"></path><path fill-rule="evenodd" d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z"></path>
</svg>
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none m-2">
<path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path>
</svg>
</clipboard-copy>
</div>
</template>
<style>
.user-mention[href$="/niufwshd"] {
color: var(--color-user-mention-fg);
background-color: var(--color-user-mention-bg);
border-radius: 2px;
margin-left: -2px;
margin-right: -2px;
padding: 0 2px;
}
</style>
</body>
</html>
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化