#include <algorithm> 
#include <iostream> 
#include <iterator> 
#include <map> 
#include <sstream> 
#include <string> 
using  namespace  std; 
 
template  < typename  T> 
T findNonEscaped( T start, T end, const  char  ch)  { 
	T result =  find( start, end, ch) ; 
 
	while  ( result ! =  end &&  result[ - 1 ]  ==  '\\ ' )  result =  find( start, end, ch) ; 
 
	return  result; 
} 
 
template  < typename  T> 
T extractParenthesis( T start, T end)  { 
	T finish =  findNonEscaped( start, end, ')' ) ; 
 
	for  ( auto  i =  findNonEscaped( next( start) , end, '(' ) ;  i ! =  end &&  i <  finish;  i =  findNonEscaped( next( i) , end, '(' ) )  finish =  findNonEscaped( next( finish) , end, ')' ) ; 
	return  finish; 
} 
 
int  main( )  { 
	const  auto  input =  "data1(\"  value 1 \" ) data2 (\" value 2\" ) anything3(\"   data3(\" value\" ) \" )" s; 
	map< string, string>  output; 
 
	for  ( auto  openParenthesis =  findNonEscaped( input.cbegin ( ) , input.cend ( ) , '(' ) , closeParenthesis =  input.cbegin ( ) ;  openParenthesis ! =  input.cend ( ) ;  openParenthesis =  findNonEscaped( openParenthesis, input.cend ( ) , '(' ) )  { 
		decltype( output) :: key_type  key; 
		istringstream ss{  string{  make_reverse_iterator( openParenthesis) , make_reverse_iterator( closeParenthesis)  }  } ; 
 
		ss >>  key; 
		closeParenthesis =  extractParenthesis( openParenthesis, input.cend ( ) ) ; 
		output[ decltype( output) :: key_type {  key.crbegin ( ) , key.crend ( )  } ]  =  decltype( output) :: mapped_type {  next( findNonEscaped( next( openParenthesis) , closeParenthesis, '"' ) ) , prev( findNonEscaped( make_reverse_iterator( closeParenthesis) , make_reverse_iterator( next( openParenthesis) ) , '"' ) .base ( ) )  } ; 
		openParenthesis =  closeParenthesis; 
	} 
 
	for  ( auto &  i :  output)  { 
		cout  <<  i.first  <<  " : "  <<  i.second  <<  endl; 
	} 
} 
 
				I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDxzc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+ClQgZmluZE5vbkVzY2FwZWQoVCBzdGFydCwgVCBlbmQsIGNvbnN0IGNoYXIgY2gpIHsKCVQgcmVzdWx0ID0gZmluZChzdGFydCwgZW5kLCBjaCk7CgoJd2hpbGUgKHJlc3VsdCAhPSBlbmQgJiYgcmVzdWx0Wy0xXSA9PSAnXFwnKSByZXN1bHQgPSBmaW5kKHN0YXJ0LCBlbmQsIGNoKTsKCglyZXR1cm4gcmVzdWx0Owp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KVCBleHRyYWN0UGFyZW50aGVzaXMoVCBzdGFydCwgVCBlbmQpIHsKCVQgZmluaXNoID0gZmluZE5vbkVzY2FwZWQoc3RhcnQsIGVuZCwgJyknKTsKCglmb3IgKGF1dG8gaSA9IGZpbmROb25Fc2NhcGVkKG5leHQoc3RhcnQpLCBlbmQsICcoJyk7IGkgIT0gZW5kICYmIGkgPCBmaW5pc2g7IGkgPSBmaW5kTm9uRXNjYXBlZChuZXh0KGkpLCBlbmQsICcoJykpIGZpbmlzaCA9IGZpbmROb25Fc2NhcGVkKG5leHQoZmluaXNoKSwgZW5kLCAnKScpOwoJcmV0dXJuIGZpbmlzaDsKfQoKaW50IG1haW4oKSB7Cgljb25zdCBhdXRvIGlucHV0ID0gImRhdGExKFwiIHZhbHVlIDEgXCIpIGRhdGEyIChcInZhbHVlIDJcIikgYW55dGhpbmczKFwiICBkYXRhMyhcInZhbHVlXCIpIFwiKSJzOwoJbWFwPHN0cmluZywgc3RyaW5nPiBvdXRwdXQ7CgoJZm9yIChhdXRvIG9wZW5QYXJlbnRoZXNpcyA9IGZpbmROb25Fc2NhcGVkKGlucHV0LmNiZWdpbigpLCBpbnB1dC5jZW5kKCksICcoJyksIGNsb3NlUGFyZW50aGVzaXMgPSBpbnB1dC5jYmVnaW4oKTsgb3BlblBhcmVudGhlc2lzICE9IGlucHV0LmNlbmQoKTsgb3BlblBhcmVudGhlc2lzID0gZmluZE5vbkVzY2FwZWQob3BlblBhcmVudGhlc2lzLCBpbnB1dC5jZW5kKCksICcoJykpIHsKCQlkZWNsdHlwZShvdXRwdXQpOjprZXlfdHlwZSBrZXk7CgkJaXN0cmluZ3N0cmVhbSBzc3sgc3RyaW5neyBtYWtlX3JldmVyc2VfaXRlcmF0b3Iob3BlblBhcmVudGhlc2lzKSwgbWFrZV9yZXZlcnNlX2l0ZXJhdG9yKGNsb3NlUGFyZW50aGVzaXMpIH0gfTsKCQkKCQlzcyA+PiBrZXk7CgkJY2xvc2VQYXJlbnRoZXNpcyA9IGV4dHJhY3RQYXJlbnRoZXNpcyhvcGVuUGFyZW50aGVzaXMsIGlucHV0LmNlbmQoKSk7CgkJb3V0cHV0W2RlY2x0eXBlKG91dHB1dCk6OmtleV90eXBleyBrZXkuY3JiZWdpbigpLCBrZXkuY3JlbmQoKSB9XSA9IGRlY2x0eXBlKG91dHB1dCk6Om1hcHBlZF90eXBleyBuZXh0KGZpbmROb25Fc2NhcGVkKG5leHQob3BlblBhcmVudGhlc2lzKSwgY2xvc2VQYXJlbnRoZXNpcywgJyInKSksIHByZXYoZmluZE5vbkVzY2FwZWQobWFrZV9yZXZlcnNlX2l0ZXJhdG9yKGNsb3NlUGFyZW50aGVzaXMpLCBtYWtlX3JldmVyc2VfaXRlcmF0b3IobmV4dChvcGVuUGFyZW50aGVzaXMpKSwgJyInKS5iYXNlKCkpIH07CgkJb3BlblBhcmVudGhlc2lzID0gY2xvc2VQYXJlbnRoZXNpczsKCX0KCglmb3IgKGF1dG8mIGkgOiBvdXRwdXQpIHsKCQljb3V0IDw8IGkuZmlyc3QgPDwgIiA6ICIgPDwgaS5zZWNvbmQgPDwgZW5kbDsKCX0KfQ==