@ file : Jvm Name (" Reference Validator ") Ċ Ċ package Ġcom . jak ew h art on . sdk search . reference . validator Ċ Ċ import Ġcom . jak ew h art on . sdk search . api . dac . BaseUrl Ċ import Ġcom . jak ew h art on . sdk search . api . dac . D ac Component Ċ import Ġcom . jak ew h art on . sdk search . reference . Android Reference Ċ import Ġcom . jak ew h art on . sdk search . reference . ITEM _ LIST _ URL _ PATHS Ċ import Ġcom . jak ew h art on . sdk search . reference . PRO DU CTION _ DAC Ċ import Ġcom . jak ew h art on . sdk search . reference . PRO DU CTION _ GIT _ WEB Ċ import Ġkotlinx . coroutines . experimental . delay Ċ import Ġkotlinx . coroutines . experimental . run Blocking Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Request . Builder Ċ import Ġjava . util . concurrent . TimeUnit . MIN UTES Ċ import Ġjava . util . regex . Pattern Ċ Ċ private Ġval ĠPACK AGE Ġ= ĠPattern . compile ("^ ([ a - z 0 - 9 ]+ . )+ ") Ċ Ċ fun Ġmain ( var arg Ġargs : ĠString ) Ġ= Ġrun Blocking Ġ{ ĊĠ Ġval Ġclient Ġ= ĠOk HttpClient () ĊĠ Ġval Ġservice Ġ= ĠD ac Component . builder () ĊĠĠĠĠĠ Ġ. baseUrl ( BaseUrl ( PRO DU CTION _ DAC )) ĊĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠ Ġ. documentation Service () ĊĊĠ Ġval Ġf qc ns Ġ= ĠITEM _ LIST _ URL _ PATHS . values ĊĠĠĠĠĠ Ġ. map Ġ{ Ġservice . list ( it ) Ġ} ĊĠĠĠĠĠ Ġ. flatMap Ġ{ Ġit . await () Ġ} ĊĠĠĠĠĠ Ġ. filter Ġ{ Ġit . type Ġ== Ġ" class " Ġ} ĊĠĠĠĠĠ Ġ. map Ġ{ Ġit . label Ġ} ĊĠĠĠĠĠ Ġ. sorted () ĊĊĠ Ġval Ġreference Ġ= ĠAndroid Reference ( PRO DU CTION _ GIT _ WEB ) ĊĊĠ Ġvar Ġpad Ġ= Ġ 0 ĊĠ Ġfun Ġlog Status ( message : ĠString ) Ġ{ ĊĠĠĠ Ġprint ("\ r $ message ". pad End ( pad )) ĊĠĠĠ Ġpad Ġ= Ġmessage . length Ġ+ Ġ 1 Ġ// ĠAccount Ġfor Ġ\ r ĊĠ Ġ} ĊĠ Ġfun Ġlog Print ( message : ĠString ) Ġ{ ĊĠĠĠ Ġprintln ("\ r $ message ". pad End ( pad )) ĊĠĠĠ Ġpad Ġ= Ġ 0 ĊĠ Ġ} ĊĊĠ Ġvar Ġindex Ġ= Ġ 0 ĊĠ Ġwhile Ġ( index Ġ< Ġf qc ns . size ) Ġ{ ĊĠĠĠ Ġval Ġpercentage Ġ= Ġ( index . toFloat () Ġ/ Ġf qc ns . size Ġ* Ġ 1 0 0 0 ). toInt () Ġ/ Ġ 1 0 . 0 ĊĠĠĠ Ġval Ġchecking Ġ= Ġ" Checking Ġ${ index Ġ+ Ġ 1 } Ġof Ġ${ f qc ns . size } Ġ($ percentage %) âĢ¦ " ĊĠĠĠ Ġlog Status ( checking ) ĊĊĠĠĠ Ġval Ġfq cn Ġ= Ġf qc ns [ index ] ĊĠĠĠ Ġval Ġmatcher Ġ= ĠPACK AGE . matcher ( fq cn ) ĊĠĠĠ Ġif Ġ(! matcher . looking At ()) Ġ{ ĊĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" FQ CN Ġ'$ fq cn ' Ġdoesn 't Ġappear Ġto Ġbe Ġvalid .") ĊĠĠĠ Ġ} ĊĠĠĠ Ġval ĠpackageName Ġ= Ġfq cn . substring ( 0 , Ġmatcher . end () Ġ- Ġ 1 ) ĊĠĠĠ Ġval ĠclassName Ġ= Ġfq cn . substring ( matcher . end ()) ĊĊĠĠĠ Ġval Ġurl Ġ= Ġreference . source Url ( packageName , ĠclassName ) ĊĠĠĠ Ġif Ġ( url Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġval Ġrequest Ġ= ĠBuilder (). head (). url ( url ). build () ĊĠĠĠĠĠ Ġclient . new Call ( request ). execute (). use Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġit . code () ĊĠĠĠĠĠĠĠ Ġif Ġ( code Ġ== Ġ 4 2 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġlog Status ("$ checking ĠRate Ġlimited ! ĠCool ing Ġoff âĢ¦ ") ĊĠĠĠĠĠĠĠĠĠ Ġdelay ( 2 , ĠMIN UTES ) ĊĠĠĠĠĠĠĠĠĠ Ġindex Ġ-= Ġ 1 Ġ// ĠTry Ġthis Ġindex Ġagain . ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(! it . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġlog Print ("$ code Ġ$ fq cn Ġ$ url ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġindex ++ ĊĠ Ġ} ĊĊĠ Ġlog Print ("") Ċ } Ċ