package Ġcom . commit 4 5 1 . youtube extractor Ċ Ċ import Ġjava . net . URL Decoder Ċ import Ġjava . util .* Ċ import Ġjava . util . regex . Pattern ĊĊ Ċ internal Ġobject ĠUtil Ġ{ ĊĊĠĠĠ Ġfun Ġmatch Group 1 ( pattern : ĠString , Ġinput : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmatch Group ( pattern , Ġinput , Ġ 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmatch Group ( pattern : ĠString , Ġinput : ĠString , Ġgroup : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpat Ġ= ĠPattern . compile ( pattern ) ĊĠĠĠĠĠĠĠ Ġval Ġmat Ġ= Ġpat . matcher ( input ) ĊĠĠĠĠĠĠĠ Ġval Ġfound Match Ġ= Ġmat . find () ĊĠĠĠĠĠĠĠ Ġif Ġ( found Match ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmat . group ( group ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( input . length Ġ> Ġ 1 0 2 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠException (" failed Ġto Ġfind Ġpattern Ġ\"$ pattern ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠException (" failed Ġto Ġfind Ġpattern Ġ\"$ pattern Ġinside Ġof Ġ$ input \" ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Match ( pattern : ĠString , Ġinput : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpat Ġ= ĠPattern . compile ( pattern ) ĊĠĠĠĠĠĠĠ Ġval Ġmat Ġ= Ġpat . matcher ( input ) ĊĠĠĠĠĠĠĠ Ġreturn Ġmat . find () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcompat Parse Map ( input : ĠString ): ĠMap < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= ĠHashMap < String , ĠString >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( arg Ġin Ġinput . split ("& ". to Regex ()). drop Last While Ġ{ Ġit . isEmpty () Ġ}. to Typed Array ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsplit Arg Ġ= Ġarg . split (" =". to Regex ()). drop Last While Ġ{ Ġit . isEmpty () Ġ}. to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( split Arg . size Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ split Arg [ 0 ]] Ġ= ĠURL Decoder . decode ( split Arg [ 1 ], Ġ" UTF - 8 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ split Arg [ 0 ]] Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmap ĊĠĠĠ Ġ} Ċ }