import java.util.ArrayList;
import java.util.List;
class Ideone{
protected static final String SAM_STRING_DELIM
= "\\~";
public static void main
(String []args
){ String str
= "111110Y~111120Y~111130Y~111140Y~111150Y~111160Y~111191Y~111199Y~111211Y~111219Y~111310Y~111320Y~111331Y~111332Y~111333Y~111334Y~111335Y~111336Y~111339Y~111411Y~111419Y~111421Y~111422Y~111910Y~111920Y~111930Y~111940Y~111991Y~111992Y~111998Y~112111Y~112112Y~112120Y~112130 ~112210Y~112310Y~112320Y~112330Y~112340Y~112390Y~112410Y~112420Y~112511Y~112512Y~112519Y~112910Y~112920Y~112930Y~112990Y~113110Y~113210Y~113310Y~114111Y~114112Y~114119Y~114210Y~115111Y~115112Y~115113Y~115114Y~115115Y~115116Y~115210Y~115310E~211111Y~211112Y~212111Y~212112Y~212113Y~212210Y~212221Y~212222Y~212231Y~212234Y~212291Y~212299Y~212311Y~212312Y~212313Y~212319Y~212321Y~212322Y~212324Y~212325Y~212391Y~212392Y~212393Y~212399Y~213111Y~213112Y~213113Y~213114Y~221111Y~221112Y~221113Y~221121Y~221122Y~221210Y~221310Y~221320Y~221330Y~236115Y~236116Y~236117Y~236118Y~236210Y~236220Y~237110Y~237120Y~237130Y~237210Y~237310Y~237990E~238110Y~238120Y~238130Y~238140Y~238150Y~238160Y~238170Y~238190Y~238210Y~238220Y~238290Y~238310Y~238320Y~238330Y~238340Y~238350Y~238390Y~238910Y~238990Y~311111Y~311119Y~311211Y~311212Y~311213Y~311221Y~311225Y~311230Y~311313Y~311340Y~311411Y~311412Y~311421Y~311422Y~311423Y~311511Y~311512Y~311513Y~311514Y~311520Y~311611Y~311612Y~311613Y~311615Y~311811Y~311812Y~311813Y~311821Y~311830Y~311911Y~311919Y~311920Y~311930Y~311941Y~311942Y~311991Y~311999Y~312111Y~312112Y~312113Y~312120Y~312130Y~312140Y~313210Y~313230Y~313320Y~314110Y~314999Y~316110Y~316992Y~321113Y~321114Y~321211Y~321212Y~321213Y~321214Y~321219Y~321911Y~321912Y~321918Y~321920Y~321991Y~321992Y~321999Y~322110Y~322121Y~322122Y~322130Y~322211Y~322212Y~322291Y~322299Y~323113Y~323117Y~324110Y~324121Y~324122Y~324191Y~324199Y~325110Y~325120Y~325193Y~325199Y~325211Y~325212Y~325311Y~325312Y~325314Y~325320Y~325411Y~325412Y~325413Y~325414Y~325510Y~325520Y~325611Y~325612Y~325613Y~325620Y~325910Y~325920Y~325991Y~325992Y~325998Y~326111Y~326112Y~326113Y~326121Y~326122Y~326130Y~326140Y~326150Y~326160Y~326191Y~326199Y~326211Y~326212Y~326220Y~326291Y~326299Y~327211Y~327212Y~327213Y~327215Y~327310Y~327320Y~327331Y~327332Y~327390Y~327410Y~327420Y~327910Y~327991Y~327992Y~327993Y~327999Y~331210Y~331221Y~331222Y~331314Y~331315Y~331491Y~331492Y~331511Y~331512Y~331513Y~331524Y~332111Y~332112Y~332114Y~332117Y~332311Y~332312Y~332313Y~332321Y~332322Y~332323Y~332410Y~332420Y~332431Y~332439Y~332510Y~332618Y~332710Y~332721Y~332722Y~332811Y~332812Y~332813Y~332911Y~332912Y~332913Y~332919Y~332991Y~332992Y~332993Y~332994Y~332996Y~332999Y~333111Y~333112Y~333120Y~333131Y~333132Y~333314Y~333414Y~333415Y~333511Y~333514Y~333515Y~333611Y~333612Y~333613Y~333618Y~333911Y~333912Y~333913Y~333921Y~333922Y~333923Y~333924Y~333991Y~333992Y~333993Y~333994Y~333995Y~333996Y~333997Y~333999Y~334111Y~334112Y~334210Y~334220Y~334290Y~334310Y~334412Y~334413Y~334417Y~334418Y~334419Y~334510Y~334511Y~334512Y~334513Y~334514Y~334515Y~334516Y~334517Y~334519Y~335110Y~335121Y~335122Y~335129Y~335221Y~335222Y~335224Y~335228Y~335311Y~335312Y~335313Y~335314Y~335911Y~335912Y~335921Y~335929Y~335931Y~335932Y~335991Y~335999Y~336111Y~336112Y~336120Y~336211Y~336212Y~336213Y~336214Y~336330Y~336340Y~336350Y~336360Y~336370Y~336411Y~336412Y~336413Y~336414Y~336415Y~336419Y~336510Y~336611Y~336612Y~336991Y~336992Y~336999Y~337110Y~337121Y~337122Y~337124Y~337125Y~337127Y~337211Y~337212Y~337214Y~337215Y~337910Y~337920Y~339112Y~339113Y~339114Y~339115Y~339116Y~339920Y~339950Y~339991Y~339992Y~339993Y~339994Y~339995Y~339999Y~423110Y~423120Y~423130Y~423140Y~423210Y~423220Y~423310Y~423320Y~423330Y~423390Y~423410Y~423420Y~423430Y~423440Y~423450Y~423460Y~423490Y~423510Y~423520Y~423610Y~423620Y~423690Y~423710Y~423720Y~423730Y~423740Y~423810Y~423820Y~423830Y~423840Y~423850Y~423860Y~423910Y~423920Y~423930Y~423940Y~423990Y~424110Y~424120Y~424130Y~424210Y~424310Y~424320Y~424330Y~424340Y~424410Y~424420Y~424430Y~424440Y~424450Y~424460Y~424470Y~424480Y~424490Y~424510Y~424520Y~424590Y~424610Y~424690Y~424710Y~424720Y~424810Y~424820Y~424910Y~424920Y~424930Y~424940Y~424950Y~424990Y~425110Y~425120Y~441110Y~441120Y~441210Y~441222Y~441310Y~441320Y~442110Y~442210Y~442291Y~442299Y~444110Y~444120Y~444130Y~444190Y~444210Y~444220Y~445110Y~445120Y~445210Y~445220Y~445230Y~445291Y~445292Y~445299Y~445310Y~446110Y~446120Y~446130Y~446191Y~446199Y~447110Y~447190Y~448110Y~448120Y~448130Y~448140Y~448150Y~448190Y~448210Y~448310Y~448320Y~451110Y~451120Y~451130Y~451140Y~451211Y~451212Y~452111Y~452112Y~452910Y~452990Y~453110Y~453210Y~453220Y~453310Y~453910Y~453920Y~453930Y~453991Y~453998Y~454111Y~454112Y~454113Y~454210Y~454390Y~481111Y~481112Y~481211E~481212E~481219Y~482111Y~482112Y~483111Y~483112Y~483113Y~483114Y~483211Y~483212Y~484110Y~484121Y~484122Y~484210Y~484220Y~484230Y~485111Y~485112Y~485113Y~485119Y~485210Y~485310Y~485320Y~485410Y~485510Y~485991Y~485999Y~486110Y~486210Y~486910Y~486990Y~487110Y~487210Y~487990Y~488111Y~488119Y~488190Y~488210Y~488310Y~488320Y~488330Y~488390Y~488410Y~488490Y~488510E~488991Y~488999Y~491110Y~492110Y~492210Y~493110Y~493120Y~493130Y~493190Y~511110Y~511120Y~511130Y~511140Y~511191Y~511199Y~511210Y~512110Y~512120Y~512131Y~512132Y~512191Y~512199Y~512210Y~512220Y~512230Y~512240Y~512290Y~515111Y~515112Y~515120Y~515210Y~517110Y~517210Y~517410Y~517911Y~517919Y~518210Y~519110Y~519120Y~519130Y~521110 ~522110Y~522120Y~522130Y~522190Y~522210Y~522220Y~522291Y~522292Y~522293Y~522294Y~522298Y~522310Y~522320Y~522390Y~523110Y~523120Y~523130Y~523140Y~523210Y~523910Y~523920Y~523930Y~523991Y~523999Y~524113Y~524114Y~524126Y~524127Y~524128Y~524130Y~524210Y~524291Y~524292Y~524298Y~525110Y~525120Y~525190Y~525910Y~525920Y~525990Y~531110Y~531120Y~531130Y~531190E~531210Y~531311Y~531312Y~531320Y~531390Y~532111Y~532112Y~532120Y~532210Y~532220Y~532230Y~532291Y~532292Y~532299Y~532310Y~532411Y~532412Y~532420Y~532490Y~533110Y~541110Y~541120 ~541191Y~541199Y~541211Y~541213Y~541214Y~541219Y~541310Y~541320Y~541330E~541340Y~541350Y~541360Y~541370Y~541380Y~541410Y~541420Y~541430Y~541490Y~541511Y~541512Y~541513Y~541519E~541611Y~541612Y~541613Y~541614Y~541618Y~541620Y~541690Y~541711Y~541712E~541720Y~541810Y~541820Y~541830Y~541840Y~541850Y~541860Y~541870Y~541890Y~541910Y~541921Y~541922Y~541930Y~541940Y~541990Y~551111Y~551112Y~551114 ~561110Y~561210Y~561311Y~561312Y~561320Y~561330Y~561410Y~561421Y~561422Y~561431Y~561439Y~561440Y~561450Y~561491Y~561492Y~561499Y~561510Y~561520Y~561591Y~561599Y~561611Y~561612Y~561613Y~561621Y~561622Y~561710Y~561720Y~561730Y~561740Y~561790Y~561910Y~561920Y~561990Y~562111Y~562112Y~562119Y~562211Y~562212Y~562213Y~562219Y~562910E~562920Y~562991Y~562998Y~611110Y";
System.
out.
println("Delimiter " +SAM_STRING_DELIM.
charAt(1)+"\n");
int count = 0;
List<String> result = splitOnNthOccurrence(str, SAM_STRING_DELIM.charAt(1), 100);
System.
out.
println(count
+" " +value
+"\n"); count++;
}
}
protected static List
<String
> splitOnNthOccurrence
(String str,
char c,
int n
) { List<String> result = new ArrayList<String>();
int pos = nthOccurrence(str, c, n);
if (pos == -1) {
System.
out.
println("Left over string: " +str
+"\n"); result.add(str);
return result;
}
result.add(str.substring(0,pos));
result.addAll(splitOnNthOccurrence(str.substring(pos+1), c, n));
return result;
}
/**
* Method returns the position of the nth occurrence of a delimiter
* @param str String to run operation on
* @param c delimiter to split on
* @param n the number of occurrences of the character delimiter at which the position should be returned
* @return index of the nth occurrence of a delimiter
*/
private static int nthOccurrence
(String str,
char c,
int n
) { n--;
int pos = str.indexOf(c, 0);
while (n > 0 && pos != -1) {
pos = str.indexOf(c, pos+1);
n--;
}
return pos;
}
}
aW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CmltcG9ydCBqYXZhLnV0aWwuTGlzdDsKCmNsYXNzIElkZW9uZXsKCXByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIFNBTV9TVFJJTkdfREVMSU0gPSAiXFx+IjsKCiAgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIFtdYXJncyl7CiAgICAgICAgU3RyaW5nIHN0ciA9ICIxMTExMTBZfjExMTEyMFl+MTExMTMwWX4xMTExNDBZfjExMTE1MFl+MTExMTYwWX4xMTExOTFZfjExMTE5OVl+MTExMjExWX4xMTEyMTlZfjExMTMxMFl+MTExMzIwWX4xMTEzMzFZfjExMTMzMll+MTExMzMzWX4xMTEzMzRZfjExMTMzNVl+MTExMzM2WX4xMTEzMzlZfjExMTQxMVl+MTExNDE5WX4xMTE0MjFZfjExMTQyMll+MTExOTEwWX4xMTE5MjBZfjExMTkzMFl+MTExOTQwWX4xMTE5OTFZfjExMTk5Mll+MTExOTk4WX4xMTIxMTFZfjExMjExMll+MTEyMTIwWX4xMTIxMzAgfjExMjIxMFl+MTEyMzEwWX4xMTIzMjBZfjExMjMzMFl+MTEyMzQwWX4xMTIzOTBZfjExMjQxMFl+MTEyNDIwWX4xMTI1MTFZfjExMjUxMll+MTEyNTE5WX4xMTI5MTBZfjExMjkyMFl+MTEyOTMwWX4xMTI5OTBZfjExMzExMFl+MTEzMjEwWX4xMTMzMTBZfjExNDExMVl+MTE0MTEyWX4xMTQxMTlZfjExNDIxMFl+MTE1MTExWX4xMTUxMTJZfjExNTExM1l+MTE1MTE0WX4xMTUxMTVZfjExNTExNll+MTE1MjEwWX4xMTUzMTBFfjIxMTExMVl+MjExMTEyWX4yMTIxMTFZfjIxMjExMll+MjEyMTEzWX4yMTIyMTBZfjIxMjIyMVl+MjEyMjIyWX4yMTIyMzFZfjIxMjIzNFl+MjEyMjkxWX4yMTIyOTlZfjIxMjMxMVl+MjEyMzEyWX4yMTIzMTNZfjIxMjMxOVl+MjEyMzIxWX4yMTIzMjJZfjIxMjMyNFl+MjEyMzI1WX4yMTIzOTFZfjIxMjM5Mll+MjEyMzkzWX4yMTIzOTlZfjIxMzExMVl+MjEzMTEyWX4yMTMxMTNZfjIxMzExNFl+MjIxMTExWX4yMjExMTJZfjIyMTExM1l+MjIxMTIxWX4yMjExMjJZfjIyMTIxMFl+MjIxMzEwWX4yMjEzMjBZfjIyMTMzMFl+MjM2MTE1WX4yMzYxMTZZfjIzNjExN1l+MjM2MTE4WX4yMzYyMTBZfjIzNjIyMFl+MjM3MTEwWX4yMzcxMjBZfjIzNzEzMFl+MjM3MjEwWX4yMzczMTBZfjIzNzk5MEV+MjM4MTEwWX4yMzgxMjBZfjIzODEzMFl+MjM4MTQwWX4yMzgxNTBZfjIzODE2MFl+MjM4MTcwWX4yMzgxOTBZfjIzODIxMFl+MjM4MjIwWX4yMzgyOTBZfjIzODMxMFl+MjM4MzIwWX4yMzgzMzBZfjIzODM0MFl+MjM4MzUwWX4yMzgzOTBZfjIzODkxMFl+MjM4OTkwWX4zMTExMTFZfjMxMTExOVl+MzExMjExWX4zMTEyMTJZfjMxMTIxM1l+MzExMjIxWX4zMTEyMjVZfjMxMTIzMFl+MzExMzEzWX4zMTEzNDBZfjMxMTQxMVl+MzExNDEyWX4zMTE0MjFZfjMxMTQyMll+MzExNDIzWX4zMTE1MTFZfjMxMTUxMll+MzExNTEzWX4zMTE1MTRZfjMxMTUyMFl+MzExNjExWX4zMTE2MTJZfjMxMTYxM1l+MzExNjE1WX4zMTE4MTFZfjMxMTgxMll+MzExODEzWX4zMTE4MjFZfjMxMTgzMFl+MzExOTExWX4zMTE5MTlZfjMxMTkyMFl+MzExOTMwWX4zMTE5NDFZfjMxMTk0Mll+MzExOTkxWX4zMTE5OTlZfjMxMjExMVl+MzEyMTEyWX4zMTIxMTNZfjMxMjEyMFl+MzEyMTMwWX4zMTIxNDBZfjMxMzIxMFl+MzEzMjMwWX4zMTMzMjBZfjMxNDExMFl+MzE0OTk5WX4zMTYxMTBZfjMxNjk5Mll+MzIxMTEzWX4zMjExMTRZfjMyMTIxMVl+MzIxMjEyWX4zMjEyMTNZfjMyMTIxNFl+MzIxMjE5WX4zMjE5MTFZfjMyMTkxMll+MzIxOTE4WX4zMjE5MjBZfjMyMTk5MVl+MzIxOTkyWX4zMjE5OTlZfjMyMjExMFl+MzIyMTIxWX4zMjIxMjJZfjMyMjEzMFl+MzIyMjExWX4zMjIyMTJZfjMyMjI5MVl+MzIyMjk5WX4zMjMxMTNZfjMyMzExN1l+MzI0MTEwWX4zMjQxMjFZfjMyNDEyMll+MzI0MTkxWX4zMjQxOTlZfjMyNTExMFl+MzI1MTIwWX4zMjUxOTNZfjMyNTE5OVl+MzI1MjExWX4zMjUyMTJZfjMyNTMxMVl+MzI1MzEyWX4zMjUzMTRZfjMyNTMyMFl+MzI1NDExWX4zMjU0MTJZfjMyNTQxM1l+MzI1NDE0WX4zMjU1MTBZfjMyNTUyMFl+MzI1NjExWX4zMjU2MTJZfjMyNTYxM1l+MzI1NjIwWX4zMjU5MTBZfjMyNTkyMFl+MzI1OTkxWX4zMjU5OTJZfjMyNTk5OFl+MzI2MTExWX4zMjYxMTJZfjMyNjExM1l+MzI2MTIxWX4zMjYxMjJZfjMyNjEzMFl+MzI2MTQwWX4zMjYxNTBZfjMyNjE2MFl+MzI2MTkxWX4zMjYxOTlZfjMyNjIxMVl+MzI2MjEyWX4zMjYyMjBZfjMyNjI5MVl+MzI2Mjk5WX4zMjcyMTFZfjMyNzIxMll+MzI3MjEzWX4zMjcyMTVZfjMyNzMxMFl+MzI3MzIwWX4zMjczMzFZfjMyNzMzMll+MzI3MzkwWX4zMjc0MTBZfjMyNzQyMFl+MzI3OTEwWX4zMjc5OTFZfjMyNzk5Mll+MzI3OTkzWX4zMjc5OTlZfjMzMTIxMFl+MzMxMjIxWX4zMzEyMjJZfjMzMTMxNFl+MzMxMzE1WX4zMzE0OTFZfjMzMTQ5Mll+MzMxNTExWX4zMzE1MTJZfjMzMTUxM1l+MzMxNTI0WX4zMzIxMTFZfjMzMjExMll+MzMyMTE0WX4zMzIxMTdZfjMzMjMxMVl+MzMyMzEyWX4zMzIzMTNZfjMzMjMyMVl+MzMyMzIyWX4zMzIzMjNZfjMzMjQxMFl+MzMyNDIwWX4zMzI0MzFZfjMzMjQzOVl+MzMyNTEwWX4zMzI2MThZfjMzMjcxMFl+MzMyNzIxWX4zMzI3MjJZfjMzMjgxMVl+MzMyODEyWX4zMzI4MTNZfjMzMjkxMVl+MzMyOTEyWX4zMzI5MTNZfjMzMjkxOVl+MzMyOTkxWX4zMzI5OTJZfjMzMjk5M1l+MzMyOTk0WX4zMzI5OTZZfjMzMjk5OVl+MzMzMTExWX4zMzMxMTJZfjMzMzEyMFl+MzMzMTMxWX4zMzMxMzJZfjMzMzMxNFl+MzMzNDE0WX4zMzM0MTVZfjMzMzUxMVl+MzMzNTE0WX4zMzM1MTVZfjMzMzYxMVl+MzMzNjEyWX4zMzM2MTNZfjMzMzYxOFl+MzMzOTExWX4zMzM5MTJZfjMzMzkxM1l+MzMzOTIxWX4zMzM5MjJZfjMzMzkyM1l+MzMzOTI0WX4zMzM5OTFZfjMzMzk5Mll+MzMzOTkzWX4zMzM5OTRZfjMzMzk5NVl+MzMzOTk2WX4zMzM5OTdZfjMzMzk5OVl+MzM0MTExWX4zMzQxMTJZfjMzNDIxMFl+MzM0MjIwWX4zMzQyOTBZfjMzNDMxMFl+MzM0NDEyWX4zMzQ0MTNZfjMzNDQxN1l+MzM0NDE4WX4zMzQ0MTlZfjMzNDUxMFl+MzM0NTExWX4zMzQ1MTJZfjMzNDUxM1l+MzM0NTE0WX4zMzQ1MTVZfjMzNDUxNll+MzM0NTE3WX4zMzQ1MTlZfjMzNTExMFl+MzM1MTIxWX4zMzUxMjJZfjMzNTEyOVl+MzM1MjIxWX4zMzUyMjJZfjMzNTIyNFl+MzM1MjI4WX4zMzUzMTFZfjMzNTMxMll+MzM1MzEzWX4zMzUzMTRZfjMzNTkxMVl+MzM1OTEyWX4zMzU5MjFZfjMzNTkyOVl+MzM1OTMxWX4zMzU5MzJZfjMzNTk5MVl+MzM1OTk5WX4zMzYxMTFZfjMzNjExMll+MzM2MTIwWX4zMzYyMTFZfjMzNjIxMll+MzM2MjEzWX4zMzYyMTRZfjMzNjMzMFl+MzM2MzQwWX4zMzYzNTBZfjMzNjM2MFl+MzM2MzcwWX4zMzY0MTFZfjMzNjQxMll+MzM2NDEzWX4zMzY0MTRZfjMzNjQxNVl+MzM2NDE5WX4zMzY1MTBZfjMzNjYxMVl+MzM2NjEyWX4zMzY5OTFZfjMzNjk5Mll+MzM2OTk5WX4zMzcxMTBZfjMzNzEyMVl+MzM3MTIyWX4zMzcxMjRZfjMzNzEyNVl+MzM3MTI3WX4zMzcyMTFZfjMzNzIxMll+MzM3MjE0WX4zMzcyMTVZfjMzNzkxMFl+MzM3OTIwWX4zMzkxMTJZfjMzOTExM1l+MzM5MTE0WX4zMzkxMTVZfjMzOTExNll+MzM5OTIwWX4zMzk5NTBZfjMzOTk5MVl+MzM5OTkyWX4zMzk5OTNZfjMzOTk5NFl+MzM5OTk1WX4zMzk5OTlZfjQyMzExMFl+NDIzMTIwWX40MjMxMzBZfjQyMzE0MFl+NDIzMjEwWX40MjMyMjBZfjQyMzMxMFl+NDIzMzIwWX40MjMzMzBZfjQyMzM5MFl+NDIzNDEwWX40MjM0MjBZfjQyMzQzMFl+NDIzNDQwWX40MjM0NTBZfjQyMzQ2MFl+NDIzNDkwWX40MjM1MTBZfjQyMzUyMFl+NDIzNjEwWX40MjM2MjBZfjQyMzY5MFl+NDIzNzEwWX40MjM3MjBZfjQyMzczMFl+NDIzNzQwWX40MjM4MTBZfjQyMzgyMFl+NDIzODMwWX40MjM4NDBZfjQyMzg1MFl+NDIzODYwWX40MjM5MTBZfjQyMzkyMFl+NDIzOTMwWX40MjM5NDBZfjQyMzk5MFl+NDI0MTEwWX40MjQxMjBZfjQyNDEzMFl+NDI0MjEwWX40MjQzMTBZfjQyNDMyMFl+NDI0MzMwWX40MjQzNDBZfjQyNDQxMFl+NDI0NDIwWX40MjQ0MzBZfjQyNDQ0MFl+NDI0NDUwWX40MjQ0NjBZfjQyNDQ3MFl+NDI0NDgwWX40MjQ0OTBZfjQyNDUxMFl+NDI0NTIwWX40MjQ1OTBZfjQyNDYxMFl+NDI0NjkwWX40MjQ3MTBZfjQyNDcyMFl+NDI0ODEwWX40MjQ4MjBZfjQyNDkxMFl+NDI0OTIwWX40MjQ5MzBZfjQyNDk0MFl+NDI0OTUwWX40MjQ5OTBZfjQyNTExMFl+NDI1MTIwWX40NDExMTBZfjQ0MTEyMFl+NDQxMjEwWX40NDEyMjJZfjQ0MTMxMFl+NDQxMzIwWX40NDIxMTBZfjQ0MjIxMFl+NDQyMjkxWX40NDIyOTlZfjQ0NDExMFl+NDQ0MTIwWX40NDQxMzBZfjQ0NDE5MFl+NDQ0MjEwWX40NDQyMjBZfjQ0NTExMFl+NDQ1MTIwWX40NDUyMTBZfjQ0NTIyMFl+NDQ1MjMwWX40NDUyOTFZfjQ0NTI5Mll+NDQ1Mjk5WX40NDUzMTBZfjQ0NjExMFl+NDQ2MTIwWX40NDYxMzBZfjQ0NjE5MVl+NDQ2MTk5WX40NDcxMTBZfjQ0NzE5MFl+NDQ4MTEwWX40NDgxMjBZfjQ0ODEzMFl+NDQ4MTQwWX40NDgxNTBZfjQ0ODE5MFl+NDQ4MjEwWX40NDgzMTBZfjQ0ODMyMFl+NDUxMTEwWX40NTExMjBZfjQ1MTEzMFl+NDUxMTQwWX40NTEyMTFZfjQ1MTIxMll+NDUyMTExWX40NTIxMTJZfjQ1MjkxMFl+NDUyOTkwWX40NTMxMTBZfjQ1MzIxMFl+NDUzMjIwWX40NTMzMTBZfjQ1MzkxMFl+NDUzOTIwWX40NTM5MzBZfjQ1Mzk5MVl+NDUzOTk4WX40NTQxMTFZfjQ1NDExMll+NDU0MTEzWX40NTQyMTBZfjQ1NDM5MFl+NDgxMTExWX40ODExMTJZfjQ4MTIxMUV+NDgxMjEyRX40ODEyMTlZfjQ4MjExMVl+NDgyMTEyWX40ODMxMTFZfjQ4MzExMll+NDgzMTEzWX40ODMxMTRZfjQ4MzIxMVl+NDgzMjEyWX40ODQxMTBZfjQ4NDEyMVl+NDg0MTIyWX40ODQyMTBZfjQ4NDIyMFl+NDg0MjMwWX40ODUxMTFZfjQ4NTExMll+NDg1MTEzWX40ODUxMTlZfjQ4NTIxMFl+NDg1MzEwWX40ODUzMjBZfjQ4NTQxMFl+NDg1NTEwWX40ODU5OTFZfjQ4NTk5OVl+NDg2MTEwWX40ODYyMTBZfjQ4NjkxMFl+NDg2OTkwWX40ODcxMTBZfjQ4NzIxMFl+NDg3OTkwWX40ODgxMTFZfjQ4ODExOVl+NDg4MTkwWX40ODgyMTBZfjQ4ODMxMFl+NDg4MzIwWX40ODgzMzBZfjQ4ODM5MFl+NDg4NDEwWX40ODg0OTBZfjQ4ODUxMEV+NDg4OTkxWX40ODg5OTlZfjQ5MTExMFl+NDkyMTEwWX40OTIyMTBZfjQ5MzExMFl+NDkzMTIwWX40OTMxMzBZfjQ5MzE5MFl+NTExMTEwWX41MTExMjBZfjUxMTEzMFl+NTExMTQwWX41MTExOTFZfjUxMTE5OVl+NTExMjEwWX41MTIxMTBZfjUxMjEyMFl+NTEyMTMxWX41MTIxMzJZfjUxMjE5MVl+NTEyMTk5WX41MTIyMTBZfjUxMjIyMFl+NTEyMjMwWX41MTIyNDBZfjUxMjI5MFl+NTE1MTExWX41MTUxMTJZfjUxNTEyMFl+NTE1MjEwWX41MTcxMTBZfjUxNzIxMFl+NTE3NDEwWX41MTc5MTFZfjUxNzkxOVl+NTE4MjEwWX41MTkxMTBZfjUxOTEyMFl+NTE5MTMwWX41MjExMTAgfjUyMjExMFl+NTIyMTIwWX41MjIxMzBZfjUyMjE5MFl+NTIyMjEwWX41MjIyMjBZfjUyMjI5MVl+NTIyMjkyWX41MjIyOTNZfjUyMjI5NFl+NTIyMjk4WX41MjIzMTBZfjUyMjMyMFl+NTIyMzkwWX41MjMxMTBZfjUyMzEyMFl+NTIzMTMwWX41MjMxNDBZfjUyMzIxMFl+NTIzOTEwWX41MjM5MjBZfjUyMzkzMFl+NTIzOTkxWX41MjM5OTlZfjUyNDExM1l+NTI0MTE0WX41MjQxMjZZfjUyNDEyN1l+NTI0MTI4WX41MjQxMzBZfjUyNDIxMFl+NTI0MjkxWX41MjQyOTJZfjUyNDI5OFl+NTI1MTEwWX41MjUxMjBZfjUyNTE5MFl+NTI1OTEwWX41MjU5MjBZfjUyNTk5MFl+NTMxMTEwWX41MzExMjBZfjUzMTEzMFl+NTMxMTkwRX41MzEyMTBZfjUzMTMxMVl+NTMxMzEyWX41MzEzMjBZfjUzMTM5MFl+NTMyMTExWX41MzIxMTJZfjUzMjEyMFl+NTMyMjEwWX41MzIyMjBZfjUzMjIzMFl+NTMyMjkxWX41MzIyOTJZfjUzMjI5OVl+NTMyMzEwWX41MzI0MTFZfjUzMjQxMll+NTMyNDIwWX41MzI0OTBZfjUzMzExMFl+NTQxMTEwWX41NDExMjAgfjU0MTE5MVl+NTQxMTk5WX41NDEyMTFZfjU0MTIxM1l+NTQxMjE0WX41NDEyMTlZfjU0MTMxMFl+NTQxMzIwWX41NDEzMzBFfjU0MTM0MFl+NTQxMzUwWX41NDEzNjBZfjU0MTM3MFl+NTQxMzgwWX41NDE0MTBZfjU0MTQyMFl+NTQxNDMwWX41NDE0OTBZfjU0MTUxMVl+NTQxNTEyWX41NDE1MTNZfjU0MTUxOUV+NTQxNjExWX41NDE2MTJZfjU0MTYxM1l+NTQxNjE0WX41NDE2MThZfjU0MTYyMFl+NTQxNjkwWX41NDE3MTFZfjU0MTcxMkV+NTQxNzIwWX41NDE4MTBZfjU0MTgyMFl+NTQxODMwWX41NDE4NDBZfjU0MTg1MFl+NTQxODYwWX41NDE4NzBZfjU0MTg5MFl+NTQxOTEwWX41NDE5MjFZfjU0MTkyMll+NTQxOTMwWX41NDE5NDBZfjU0MTk5MFl+NTUxMTExWX41NTExMTJZfjU1MTExNCB+NTYxMTEwWX41NjEyMTBZfjU2MTMxMVl+NTYxMzEyWX41NjEzMjBZfjU2MTMzMFl+NTYxNDEwWX41NjE0MjFZfjU2MTQyMll+NTYxNDMxWX41NjE0MzlZfjU2MTQ0MFl+NTYxNDUwWX41NjE0OTFZfjU2MTQ5Mll+NTYxNDk5WX41NjE1MTBZfjU2MTUyMFl+NTYxNTkxWX41NjE1OTlZfjU2MTYxMVl+NTYxNjEyWX41NjE2MTNZfjU2MTYyMVl+NTYxNjIyWX41NjE3MTBZfjU2MTcyMFl+NTYxNzMwWX41NjE3NDBZfjU2MTc5MFl+NTYxOTEwWX41NjE5MjBZfjU2MTk5MFl+NTYyMTExWX41NjIxMTJZfjU2MjExOVl+NTYyMjExWX41NjIyMTJZfjU2MjIxM1l+NTYyMjE5WX41NjI5MTBFfjU2MjkyMFl+NTYyOTkxWX41NjI5OThZfjYxMTExMFkiOwogICAgICAgIAogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRGVsaW1pdGVyICIgK1NBTV9TVFJJTkdfREVMSU0uY2hhckF0KDEpKyJcbiIpOwogICAgICAgIAogICAgICAgIGludCBjb3VudCA9IDA7CiAgICAgICAgTGlzdDxTdHJpbmc+IHJlc3VsdCA9IHNwbGl0T25OdGhPY2N1cnJlbmNlKHN0ciwgU0FNX1NUUklOR19ERUxJTS5jaGFyQXQoMSksIDEwMCk7CiAgICAgICAgZm9yKFN0cmluZyB2YWx1ZSA6IHJlc3VsdCkgewogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oY291bnQrIiAiICt2YWx1ZSsiXG4iKTsKICAgICAgICAgICAgY291bnQrKzsKICAgICAgICB9CiAgICAgfQogICAgIAogICAgcHJvdGVjdGVkIHN0YXRpYyBMaXN0PFN0cmluZz4gc3BsaXRPbk50aE9jY3VycmVuY2UoU3RyaW5nIHN0ciwgY2hhciBjLCBpbnQgbikgewogICAgICAgIExpc3Q8U3RyaW5nPiByZXN1bHQgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsKICAgICAgICAKICAgICAgICBpbnQgcG9zID0gbnRoT2NjdXJyZW5jZShzdHIsIGMsIG4pOwogICAgICAgIGlmIChwb3MgPT0gLTEpIHsKICAgICAgICAJU3lzdGVtLm91dC5wcmludGxuKCJMZWZ0IG92ZXIgc3RyaW5nOiAiICtzdHIrIlxuIik7CiAgICAgICAgCXJlc3VsdC5hZGQoc3RyKTsKICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICB9IAogICAgICAgIAogICAgICAgIHJlc3VsdC5hZGQoc3RyLnN1YnN0cmluZygwLHBvcykpOwogICAgICAgIHJlc3VsdC5hZGRBbGwoc3BsaXRPbk50aE9jY3VycmVuY2Uoc3RyLnN1YnN0cmluZyhwb3MrMSksIGMsIG4pKTsKICAgICAgICAKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgIAogICAgfQogICAgCiAgICAvKioKICAgICAqIE1ldGhvZCByZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgbnRoIG9jY3VycmVuY2Ugb2YgYSBkZWxpbWl0ZXIKICAgICAqIEBwYXJhbSBzdHIgU3RyaW5nIHRvIHJ1biBvcGVyYXRpb24gb24KICAgICAqIEBwYXJhbSBjIGRlbGltaXRlciB0byBzcGxpdCBvbgogICAgICogQHBhcmFtIG4gdGhlIG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiB0aGUgY2hhcmFjdGVyIGRlbGltaXRlciBhdCB3aGljaCB0aGUgcG9zaXRpb24gc2hvdWxkIGJlIHJldHVybmVkCiAgICAgKiBAcmV0dXJuIGluZGV4IG9mIHRoZSBudGggb2NjdXJyZW5jZSBvZiBhIGRlbGltaXRlcgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBpbnQgbnRoT2NjdXJyZW5jZShTdHJpbmcgc3RyLCBjaGFyIGMsIGludCBuKSB7CiAgICAgICAgbi0tOwogICAgICAgIGludCBwb3MgPSBzdHIuaW5kZXhPZihjLCAwKTsKICAgICAgICB3aGlsZSAobiA+IDAgJiYgcG9zICE9IC0xKSB7CiAgICAgICAgICAgIHBvcyA9IHN0ci5pbmRleE9mKGMsIHBvcysxKTsKICAgICAgICAgICAgbi0tOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcG9zOwogICAgIH0KCn0K