main.cpp : In function 'typename std::enable_if<std::is_base_of<expression_part, lhsexpr>::value, lhsexpr>::type operator||(lhsexpr, container&) [with lhsexpr = expression_multiply<expression_parameter, expression_parameter>, container = std::vector<int>, typename std::enable_if<std::is_base_of<expression_part, lhsexpr>::value, lhsexpr>::type = expression_multiply<expression_parameter, expression_parameter>]' :
main.cpp : 125 : 24 : instantiated from here
main.cpp : 108 : 9 : error: no match for call to '(expression_multiply<expression_parameter, expression_parameter>) (int&)'
main.cpp : 70 : 7 : note: candidate is:
main.cpp : 77 : 10 : note: template < class T> decltype ( ( lhs:: operator ( ) ( v) * expression_multiply< lhs, rhs_given> :: rhs :: operator ( ) ( v) ) ) expression_multiply:: operator ( ) ( const T& ) const [ with T = T, lhs = expression_parameter, rhs_given = expression_parameter, decltype ( ( lhs:: operator ( ) ( v) * expression_multiply< lhs, rhs_given> :: rhs :: operator ( ) ( v) ) ) = decltype ( ( expression_parameter:: operator ( ) ( v) * expression_parameter:: operator ( ) ( v) ) ) , expression_multiply< lhs, rhs_given> :: rhs = inherit_again< expression_parameter> ]
main.cpp : In function 'typename std::enable_if<std::is_base_of<expression_part, lhsexpr>::value, lhsexpr>::type operator||(lhsexpr, container&) [with lhsexpr = expression_add<expression_constant<int>, expression_parameter>, container = std::vector<double>, typename std::enable_if<std::is_base_of<expression_part, lhsexpr>::value, lhsexpr>::type = expression_add<expression_constant<int>, expression_parameter>]' :
main.cpp : 134 : 24 : instantiated from here
main.cpp : 108 : 9 : error: no match for call to '(expression_add<expression_constant<int>, expression_parameter>) (double&)'
main.cpp : 41 : 7 : note: candidate is:
main.cpp : 48 : 10 : note: template < class T> decltype ( ( lhs:: operator ( ) ( v) + expression_add< lhs, rhs_given> :: rhs :: operator ( ) ( v) ) ) expression_add:: operator ( ) ( const T& ) const [ with T = T, lhs = expression_constant< int > , rhs_given = expression_parameter, decltype ( ( lhs:: operator ( ) ( v) + expression_add< lhs, rhs_given> :: rhs :: operator ( ) ( v) ) ) = decltype ( ( expression_constant:: operator ( ) [ with T = T, V = int ] ( v) + expression_parameter:: operator ( ) ( v) ) ) , expression_add< lhs, rhs_given> :: rhs = inherit_again< expression_parameter> ]
main.cpp : In function 'typename std::enable_if<std::is_base_of<expression_part, lhsexpr>::value, lhsexpr>::type operator||(lhsexpr, container&) [with lhsexpr = expression_add<expression_add<expression_parameter, expression_multiply<expression_parameter, expression_parameter> >, expression_multiply<expression_constant<char>, expression_parameter> >, container = std::vector<int>, typename std::enable_if<std::is_base_of<expression_part, lhsexpr>::value, lhsexpr>::type = expression_add<expression_add<expression_parameter, expression_multiply<expression_parameter, expression_parameter> >, expression_multiply<expression_constant<char>, expression_parameter> >]' :
main.cpp : 141 : 10 : instantiated from here
main.cpp : 108 : 9 : error: no match for call to '(expression_add<expression_add<expression_parameter, expression_multiply<expression_parameter, expression_parameter> >, expression_multiply<expression_constant<char>, expression_parameter> >) (int&)'
main.cpp : 41 : 7 : note: candidate is:
main.cpp : 48 : 10 : note: template < class T> decltype ( ( lhs:: operator ( ) ( v) + expression_add< lhs, rhs_given> :: rhs :: operator ( ) ( v) ) ) expression_add:: operator ( ) ( const T& ) const [ with T = T, lhs = expression_add< expression_parameter, expression_multiply< expression_parameter, expression_parameter> > , rhs_given = expression_multiply< expression_constant< char > , expression_parameter> , decltype ( ( lhs:: operator ( ) ( v) + expression_add< lhs, rhs_given> :: rhs :: operator ( ) ( v) ) ) = decltype ( ( expression_add:: operator ( ) [ with T = T, lhs = expression_parameter, rhs_given = expression_multiply< expression_parameter, expression_parameter> , decltype ( ( lhs:: operator ( ) ( v) + expression_add< lhs, rhs_given> :: rhs :: operator ( ) ( v) ) ) = decltype ( ( expression_parameter:: operator ( ) ( v) + expression_multiply:: operator ( ) [ with T = T, lhs = expression_parameter, rhs_given = expression_parameter, decltype ( ( lhs:: operator ( ) ( v) * expression_multiply< lhs, rhs_given> :: rhs :: operator ( ) ( v) ) ) = decltype ( ( expression_parameter:: operator ( ) ( v) * expression_parameter:: operator ( ) ( v) ) ) , expression_multiply< lhs, rhs_given> :: rhs = inherit_again< expression_parameter> ] ( v) ) ) , expression_add< lhs, rhs_given> :: rhs = inherit_again< expression_multiply< expression_parameter, expression_parameter> > ] ( v) + expression_multiply:: operator ( ) [ with T = T, lhs = expression_constant< char > , rhs_given = expression_parameter, decltype ( ( lhs:: operator ( ) ( v) * expression_multiply< lhs, rhs_given> :: rhs :: operator ( ) ( v) ) ) = decltype ( ( expression_constant:: operator ( ) [ with T = T, V = char ] ( v) * expression_parameter:: operator ( ) ( v) ) ) , expression_multiply< lhs, rhs_given> :: rhs = inherit_again< expression_parameter> ] ( v) ) ) , expression_add< lhs, rhs_given> :: rhs = inherit_again< expression_multiply< expression_constant< char > , expression_parameter> > ]
main.cpp : In function 'typename std::enable_if<std::is_base_of<expression_part, lhsexpr>::value, lhsexpr>::type operator||(lhsexpr, container&) [with lhsexpr = expression_add<expression_add<expression_parameter, expression_multiply<expression_parameter, expression_parameter> >, expression_multiply<expression_constant<char>, expression_parameter> >, container = std::vector<double>, typename std::enable_if<std::is_base_of<expression_part, lhsexpr>::value, lhsexpr>::type = expression_add<expression_add<expression_parameter, expression_multiply<expression_parameter, expression_parameter> >, expression_multiply<expression_constant<char>, expression_parameter> >]' :
main.cpp : 142 : 10 : instantiated from here
main.cpp : 108 : 9 : error: no match for call to '(expression_add<expression_add<expression_parameter, expression_multiply<expression_parameter, expression_parameter> >, expression_multiply<expression_constant<char>, expression_parameter> >) (double&)'
main.cpp : 41 : 7 : note: candidate is:
main.cpp : 48 : 10 : note: template < class T> decltype ( ( lhs:: operator ( ) ( v) + expression_add< lhs, rhs_given> :: rhs :: operator ( ) ( v) ) ) expression_add:: operator ( ) ( const T& ) const [ with T = T, lhs = expression_add< expression_parameter, expression_multiply< expression_parameter, expression_parameter> > , rhs_given = expression_multiply< expression_constant< char > , expression_parameter> , decltype ( ( lhs:: operator ( ) ( v) + expression_add< lhs, rhs_given> :: rhs :: operator ( ) ( v) ) ) = decltype ( ( expression_add:: operator ( ) [ with T = T, lhs = expression_parameter, rhs_given = expression_multiply< expression_parameter, expression_parameter> , decltype ( ( lhs:: operator ( ) ( v) + expression_add< lhs, rhs_given> :: rhs :: operator ( ) ( v) ) ) = decltype ( ( expression_parameter:: operator ( ) ( v) + expression_multiply:: operator ( ) [ with T = T, lhs = expression_parameter, rhs_given = expression_parameter, decltype ( ( lhs:: operator ( ) ( v) * expression_multiply< lhs, rhs_given> :: rhs :: operator ( ) ( v) ) ) = decltype ( ( expression_parameter:: operator ( ) ( v) * expression_parameter:: operator ( ) ( v) ) ) , expression_multiply< lhs, rhs_given> :: rhs = inherit_again< expression_parameter> ] ( v) ) ) , expression_add< lhs, rhs_given> :: rhs = inherit_again< expression_multiply< expression_parameter, expression_parameter> > ] ( v) + expression_multiply:: operator ( ) [ with T = T, lhs = expression_constant< char > , rhs_given = expression_parameter, decltype ( ( lhs:: operator ( ) ( v) * expression_multiply< lhs, rhs_given> :: rhs :: operator ( ) ( v) ) ) = decltype ( ( expression_constant:: operator ( ) [ with T = T, V = char ] ( v) * expression_parameter:: operator ( ) ( v) ) ) , expression_multiply< lhs, rhs_given> :: rhs = inherit_again< expression_parameter> ] ( v) ) ) , expression_add< lhs, rhs_given> :: rhs = inherit_again< expression_multiply< expression_constant< char > , expression_parameter> > ]
bWFpbi5jcHA6IEluIGZ1bmN0aW9uICd0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Jhc2Vfb2Y8ZXhwcmVzc2lvbl9wYXJ0LCBsaHNleHByPjo6dmFsdWUsIGxoc2V4cHI+Ojp0eXBlIG9wZXJhdG9yfHwobGhzZXhwciwgY29udGFpbmVyJikgW3dpdGggbGhzZXhwciA9IGV4cHJlc3Npb25fbXVsdGlwbHk8ZXhwcmVzc2lvbl9wYXJhbWV0ZXIsIGV4cHJlc3Npb25fcGFyYW1ldGVyPiwgY29udGFpbmVyID0gc3RkOjp2ZWN0b3I8aW50PiwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19iYXNlX29mPGV4cHJlc3Npb25fcGFydCwgbGhzZXhwcj46OnZhbHVlLCBsaHNleHByPjo6dHlwZSA9IGV4cHJlc3Npb25fbXVsdGlwbHk8ZXhwcmVzc2lvbl9wYXJhbWV0ZXIsIGV4cHJlc3Npb25fcGFyYW1ldGVyPl0nOgptYWluLmNwcDoxMjU6MjQ6ICAgaW5zdGFudGlhdGVkIGZyb20gaGVyZQptYWluLmNwcDoxMDg6OTogZXJyb3I6IG5vIG1hdGNoIGZvciBjYWxsIHRvICcoZXhwcmVzc2lvbl9tdWx0aXBseTxleHByZXNzaW9uX3BhcmFtZXRlciwgZXhwcmVzc2lvbl9wYXJhbWV0ZXI+KSAoaW50JiknCm1haW4uY3BwOjcwOjc6IG5vdGU6IGNhbmRpZGF0ZSBpczoKbWFpbi5jcHA6Nzc6MTA6IG5vdGU6IHRlbXBsYXRlPGNsYXNzIFQ+IGRlY2x0eXBlICgobGhzOjogb3BlcmF0b3IoKSh2KSAqIGV4cHJlc3Npb25fbXVsdGlwbHk8bGhzLCByaHNfZ2l2ZW4+OjpyaHM6OiBvcGVyYXRvcigpKHYpKSkgZXhwcmVzc2lvbl9tdWx0aXBseTo6b3BlcmF0b3IoKShjb25zdCBUJikgY29uc3QgW3dpdGggVCA9IFQsIGxocyA9IGV4cHJlc3Npb25fcGFyYW1ldGVyLCByaHNfZ2l2ZW4gPSBleHByZXNzaW9uX3BhcmFtZXRlciwgZGVjbHR5cGUgKChsaHM6OiBvcGVyYXRvcigpKHYpICogZXhwcmVzc2lvbl9tdWx0aXBseTxsaHMsIHJoc19naXZlbj46OnJoczo6IG9wZXJhdG9yKCkodikpKSA9IGRlY2x0eXBlICgoZXhwcmVzc2lvbl9wYXJhbWV0ZXI6Om9wZXJhdG9yKCkodikgKiBleHByZXNzaW9uX3BhcmFtZXRlcjo6b3BlcmF0b3IoKSh2KSkpLCBleHByZXNzaW9uX211bHRpcGx5PGxocywgcmhzX2dpdmVuPjo6cmhzID0gaW5oZXJpdF9hZ2FpbjxleHByZXNzaW9uX3BhcmFtZXRlcj5dCm1haW4uY3BwOiBJbiBmdW5jdGlvbiAndHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19iYXNlX29mPGV4cHJlc3Npb25fcGFydCwgbGhzZXhwcj46OnZhbHVlLCBsaHNleHByPjo6dHlwZSBvcGVyYXRvcnx8KGxoc2V4cHIsIGNvbnRhaW5lciYpIFt3aXRoIGxoc2V4cHIgPSBleHByZXNzaW9uX2FkZDxleHByZXNzaW9uX2NvbnN0YW50PGludD4sIGV4cHJlc3Npb25fcGFyYW1ldGVyPiwgY29udGFpbmVyID0gc3RkOjp2ZWN0b3I8ZG91YmxlPiwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19iYXNlX29mPGV4cHJlc3Npb25fcGFydCwgbGhzZXhwcj46OnZhbHVlLCBsaHNleHByPjo6dHlwZSA9IGV4cHJlc3Npb25fYWRkPGV4cHJlc3Npb25fY29uc3RhbnQ8aW50PiwgZXhwcmVzc2lvbl9wYXJhbWV0ZXI+XSc6Cm1haW4uY3BwOjEzNDoyNDogICBpbnN0YW50aWF0ZWQgZnJvbSBoZXJlCm1haW4uY3BwOjEwODo5OiBlcnJvcjogbm8gbWF0Y2ggZm9yIGNhbGwgdG8gJyhleHByZXNzaW9uX2FkZDxleHByZXNzaW9uX2NvbnN0YW50PGludD4sIGV4cHJlc3Npb25fcGFyYW1ldGVyPikgKGRvdWJsZSYpJwptYWluLmNwcDo0MTo3OiBub3RlOiBjYW5kaWRhdGUgaXM6Cm1haW4uY3BwOjQ4OjEwOiBub3RlOiB0ZW1wbGF0ZTxjbGFzcyBUPiBkZWNsdHlwZSAoKGxoczo6IG9wZXJhdG9yKCkodikgKyBleHByZXNzaW9uX2FkZDxsaHMsIHJoc19naXZlbj46OnJoczo6IG9wZXJhdG9yKCkodikpKSBleHByZXNzaW9uX2FkZDo6b3BlcmF0b3IoKShjb25zdCBUJikgY29uc3QgW3dpdGggVCA9IFQsIGxocyA9IGV4cHJlc3Npb25fY29uc3RhbnQ8aW50PiwgcmhzX2dpdmVuID0gZXhwcmVzc2lvbl9wYXJhbWV0ZXIsIGRlY2x0eXBlICgobGhzOjogb3BlcmF0b3IoKSh2KSArIGV4cHJlc3Npb25fYWRkPGxocywgcmhzX2dpdmVuPjo6cmhzOjogb3BlcmF0b3IoKSh2KSkpID0gZGVjbHR5cGUgKChleHByZXNzaW9uX2NvbnN0YW50OjpvcGVyYXRvcigpIFt3aXRoIFQgPSBULCBWID0gaW50XSh2KSArIGV4cHJlc3Npb25fcGFyYW1ldGVyOjpvcGVyYXRvcigpKHYpKSksIGV4cHJlc3Npb25fYWRkPGxocywgcmhzX2dpdmVuPjo6cmhzID0gaW5oZXJpdF9hZ2FpbjxleHByZXNzaW9uX3BhcmFtZXRlcj5dCm1haW4uY3BwOiBJbiBmdW5jdGlvbiAndHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19iYXNlX29mPGV4cHJlc3Npb25fcGFydCwgbGhzZXhwcj46OnZhbHVlLCBsaHNleHByPjo6dHlwZSBvcGVyYXRvcnx8KGxoc2V4cHIsIGNvbnRhaW5lciYpIFt3aXRoIGxoc2V4cHIgPSBleHByZXNzaW9uX2FkZDxleHByZXNzaW9uX2FkZDxleHByZXNzaW9uX3BhcmFtZXRlciwgZXhwcmVzc2lvbl9tdWx0aXBseTxleHByZXNzaW9uX3BhcmFtZXRlciwgZXhwcmVzc2lvbl9wYXJhbWV0ZXI+ID4sIGV4cHJlc3Npb25fbXVsdGlwbHk8ZXhwcmVzc2lvbl9jb25zdGFudDxjaGFyPiwgZXhwcmVzc2lvbl9wYXJhbWV0ZXI+ID4sIGNvbnRhaW5lciA9IHN0ZDo6dmVjdG9yPGludD4sIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfYmFzZV9vZjxleHByZXNzaW9uX3BhcnQsIGxoc2V4cHI+Ojp2YWx1ZSwgbGhzZXhwcj46OnR5cGUgPSBleHByZXNzaW9uX2FkZDxleHByZXNzaW9uX2FkZDxleHByZXNzaW9uX3BhcmFtZXRlciwgZXhwcmVzc2lvbl9tdWx0aXBseTxleHByZXNzaW9uX3BhcmFtZXRlciwgZXhwcmVzc2lvbl9wYXJhbWV0ZXI+ID4sIGV4cHJlc3Npb25fbXVsdGlwbHk8ZXhwcmVzc2lvbl9jb25zdGFudDxjaGFyPiwgZXhwcmVzc2lvbl9wYXJhbWV0ZXI+ID5dJzoKbWFpbi5jcHA6MTQxOjEwOiAgIGluc3RhbnRpYXRlZCBmcm9tIGhlcmUKbWFpbi5jcHA6MTA4Ojk6IGVycm9yOiBubyBtYXRjaCBmb3IgY2FsbCB0byAnKGV4cHJlc3Npb25fYWRkPGV4cHJlc3Npb25fYWRkPGV4cHJlc3Npb25fcGFyYW1ldGVyLCBleHByZXNzaW9uX211bHRpcGx5PGV4cHJlc3Npb25fcGFyYW1ldGVyLCBleHByZXNzaW9uX3BhcmFtZXRlcj4gPiwgZXhwcmVzc2lvbl9tdWx0aXBseTxleHByZXNzaW9uX2NvbnN0YW50PGNoYXI+LCBleHByZXNzaW9uX3BhcmFtZXRlcj4gPikgKGludCYpJwptYWluLmNwcDo0MTo3OiBub3RlOiBjYW5kaWRhdGUgaXM6Cm1haW4uY3BwOjQ4OjEwOiBub3RlOiB0ZW1wbGF0ZTxjbGFzcyBUPiBkZWNsdHlwZSAoKGxoczo6IG9wZXJhdG9yKCkodikgKyBleHByZXNzaW9uX2FkZDxsaHMsIHJoc19naXZlbj46OnJoczo6IG9wZXJhdG9yKCkodikpKSBleHByZXNzaW9uX2FkZDo6b3BlcmF0b3IoKShjb25zdCBUJikgY29uc3QgW3dpdGggVCA9IFQsIGxocyA9IGV4cHJlc3Npb25fYWRkPGV4cHJlc3Npb25fcGFyYW1ldGVyLCBleHByZXNzaW9uX211bHRpcGx5PGV4cHJlc3Npb25fcGFyYW1ldGVyLCBleHByZXNzaW9uX3BhcmFtZXRlcj4gPiwgcmhzX2dpdmVuID0gZXhwcmVzc2lvbl9tdWx0aXBseTxleHByZXNzaW9uX2NvbnN0YW50PGNoYXI+LCBleHByZXNzaW9uX3BhcmFtZXRlcj4sIGRlY2x0eXBlICgobGhzOjogb3BlcmF0b3IoKSh2KSArIGV4cHJlc3Npb25fYWRkPGxocywgcmhzX2dpdmVuPjo6cmhzOjogb3BlcmF0b3IoKSh2KSkpID0gZGVjbHR5cGUgKChleHByZXNzaW9uX2FkZDo6b3BlcmF0b3IoKSBbd2l0aCBUID0gVCwgbGhzID0gZXhwcmVzc2lvbl9wYXJhbWV0ZXIsIHJoc19naXZlbiA9IGV4cHJlc3Npb25fbXVsdGlwbHk8ZXhwcmVzc2lvbl9wYXJhbWV0ZXIsIGV4cHJlc3Npb25fcGFyYW1ldGVyPiwgZGVjbHR5cGUgKChsaHM6OiBvcGVyYXRvcigpKHYpICsgZXhwcmVzc2lvbl9hZGQ8bGhzLCByaHNfZ2l2ZW4+OjpyaHM6OiBvcGVyYXRvcigpKHYpKSkgPSBkZWNsdHlwZSAoKGV4cHJlc3Npb25fcGFyYW1ldGVyOjpvcGVyYXRvcigpKHYpICsgZXhwcmVzc2lvbl9tdWx0aXBseTo6b3BlcmF0b3IoKSBbd2l0aCBUID0gVCwgbGhzID0gZXhwcmVzc2lvbl9wYXJhbWV0ZXIsIHJoc19naXZlbiA9IGV4cHJlc3Npb25fcGFyYW1ldGVyLCBkZWNsdHlwZSAoKGxoczo6IG9wZXJhdG9yKCkodikgKiBleHByZXNzaW9uX211bHRpcGx5PGxocywgcmhzX2dpdmVuPjo6cmhzOjogb3BlcmF0b3IoKSh2KSkpID0gZGVjbHR5cGUgKChleHByZXNzaW9uX3BhcmFtZXRlcjo6b3BlcmF0b3IoKSh2KSAqIGV4cHJlc3Npb25fcGFyYW1ldGVyOjpvcGVyYXRvcigpKHYpKSksIGV4cHJlc3Npb25fbXVsdGlwbHk8bGhzLCByaHNfZ2l2ZW4+OjpyaHMgPSBpbmhlcml0X2FnYWluPGV4cHJlc3Npb25fcGFyYW1ldGVyPl0odikpKSwgZXhwcmVzc2lvbl9hZGQ8bGhzLCByaHNfZ2l2ZW4+OjpyaHMgPSBpbmhlcml0X2FnYWluPGV4cHJlc3Npb25fbXVsdGlwbHk8ZXhwcmVzc2lvbl9wYXJhbWV0ZXIsIGV4cHJlc3Npb25fcGFyYW1ldGVyPiA+XSh2KSArIGV4cHJlc3Npb25fbXVsdGlwbHk6Om9wZXJhdG9yKCkgW3dpdGggVCA9IFQsIGxocyA9IGV4cHJlc3Npb25fY29uc3RhbnQ8Y2hhcj4sIHJoc19naXZlbiA9IGV4cHJlc3Npb25fcGFyYW1ldGVyLCBkZWNsdHlwZSAoKGxoczo6IG9wZXJhdG9yKCkodikgKiBleHByZXNzaW9uX211bHRpcGx5PGxocywgcmhzX2dpdmVuPjo6cmhzOjogb3BlcmF0b3IoKSh2KSkpID0gZGVjbHR5cGUgKChleHByZXNzaW9uX2NvbnN0YW50OjpvcGVyYXRvcigpIFt3aXRoIFQgPSBULCBWID0gY2hhcl0odikgKiBleHByZXNzaW9uX3BhcmFtZXRlcjo6b3BlcmF0b3IoKSh2KSkpLCBleHByZXNzaW9uX211bHRpcGx5PGxocywgcmhzX2dpdmVuPjo6cmhzID0gaW5oZXJpdF9hZ2FpbjxleHByZXNzaW9uX3BhcmFtZXRlcj5dKHYpKSksIGV4cHJlc3Npb25fYWRkPGxocywgcmhzX2dpdmVuPjo6cmhzID0gaW5oZXJpdF9hZ2FpbjxleHByZXNzaW9uX211bHRpcGx5PGV4cHJlc3Npb25fY29uc3RhbnQ8Y2hhcj4sIGV4cHJlc3Npb25fcGFyYW1ldGVyPiA+XQptYWluLmNwcDogSW4gZnVuY3Rpb24gJ3R5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfYmFzZV9vZjxleHByZXNzaW9uX3BhcnQsIGxoc2V4cHI+Ojp2YWx1ZSwgbGhzZXhwcj46OnR5cGUgb3BlcmF0b3J8fChsaHNleHByLCBjb250YWluZXImKSBbd2l0aCBsaHNleHByID0gZXhwcmVzc2lvbl9hZGQ8ZXhwcmVzc2lvbl9hZGQ8ZXhwcmVzc2lvbl9wYXJhbWV0ZXIsIGV4cHJlc3Npb25fbXVsdGlwbHk8ZXhwcmVzc2lvbl9wYXJhbWV0ZXIsIGV4cHJlc3Npb25fcGFyYW1ldGVyPiA+LCBleHByZXNzaW9uX211bHRpcGx5PGV4cHJlc3Npb25fY29uc3RhbnQ8Y2hhcj4sIGV4cHJlc3Npb25fcGFyYW1ldGVyPiA+LCBjb250YWluZXIgPSBzdGQ6OnZlY3Rvcjxkb3VibGU+LCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Jhc2Vfb2Y8ZXhwcmVzc2lvbl9wYXJ0LCBsaHNleHByPjo6dmFsdWUsIGxoc2V4cHI+Ojp0eXBlID0gZXhwcmVzc2lvbl9hZGQ8ZXhwcmVzc2lvbl9hZGQ8ZXhwcmVzc2lvbl9wYXJhbWV0ZXIsIGV4cHJlc3Npb25fbXVsdGlwbHk8ZXhwcmVzc2lvbl9wYXJhbWV0ZXIsIGV4cHJlc3Npb25fcGFyYW1ldGVyPiA+LCBleHByZXNzaW9uX211bHRpcGx5PGV4cHJlc3Npb25fY29uc3RhbnQ8Y2hhcj4sIGV4cHJlc3Npb25fcGFyYW1ldGVyPiA+XSc6Cm1haW4uY3BwOjE0MjoxMDogICBpbnN0YW50aWF0ZWQgZnJvbSBoZXJlCm1haW4uY3BwOjEwODo5OiBlcnJvcjogbm8gbWF0Y2ggZm9yIGNhbGwgdG8gJyhleHByZXNzaW9uX2FkZDxleHByZXNzaW9uX2FkZDxleHByZXNzaW9uX3BhcmFtZXRlciwgZXhwcmVzc2lvbl9tdWx0aXBseTxleHByZXNzaW9uX3BhcmFtZXRlciwgZXhwcmVzc2lvbl9wYXJhbWV0ZXI+ID4sIGV4cHJlc3Npb25fbXVsdGlwbHk8ZXhwcmVzc2lvbl9jb25zdGFudDxjaGFyPiwgZXhwcmVzc2lvbl9wYXJhbWV0ZXI+ID4pIChkb3VibGUmKScKbWFpbi5jcHA6NDE6Nzogbm90ZTogY2FuZGlkYXRlIGlzOgptYWluLmNwcDo0ODoxMDogbm90ZTogdGVtcGxhdGU8Y2xhc3MgVD4gZGVjbHR5cGUgKChsaHM6OiBvcGVyYXRvcigpKHYpICsgZXhwcmVzc2lvbl9hZGQ8bGhzLCByaHNfZ2l2ZW4+OjpyaHM6OiBvcGVyYXRvcigpKHYpKSkgZXhwcmVzc2lvbl9hZGQ6Om9wZXJhdG9yKCkoY29uc3QgVCYpIGNvbnN0IFt3aXRoIFQgPSBULCBsaHMgPSBleHByZXNzaW9uX2FkZDxleHByZXNzaW9uX3BhcmFtZXRlciwgZXhwcmVzc2lvbl9tdWx0aXBseTxleHByZXNzaW9uX3BhcmFtZXRlciwgZXhwcmVzc2lvbl9wYXJhbWV0ZXI+ID4sIHJoc19naXZlbiA9IGV4cHJlc3Npb25fbXVsdGlwbHk8ZXhwcmVzc2lvbl9jb25zdGFudDxjaGFyPiwgZXhwcmVzc2lvbl9wYXJhbWV0ZXI+LCBkZWNsdHlwZSAoKGxoczo6IG9wZXJhdG9yKCkodikgKyBleHByZXNzaW9uX2FkZDxsaHMsIHJoc19naXZlbj46OnJoczo6IG9wZXJhdG9yKCkodikpKSA9IGRlY2x0eXBlICgoZXhwcmVzc2lvbl9hZGQ6Om9wZXJhdG9yKCkgW3dpdGggVCA9IFQsIGxocyA9IGV4cHJlc3Npb25fcGFyYW1ldGVyLCByaHNfZ2l2ZW4gPSBleHByZXNzaW9uX211bHRpcGx5PGV4cHJlc3Npb25fcGFyYW1ldGVyLCBleHByZXNzaW9uX3BhcmFtZXRlcj4sIGRlY2x0eXBlICgobGhzOjogb3BlcmF0b3IoKSh2KSArIGV4cHJlc3Npb25fYWRkPGxocywgcmhzX2dpdmVuPjo6cmhzOjogb3BlcmF0b3IoKSh2KSkpID0gZGVjbHR5cGUgKChleHByZXNzaW9uX3BhcmFtZXRlcjo6b3BlcmF0b3IoKSh2KSArIGV4cHJlc3Npb25fbXVsdGlwbHk6Om9wZXJhdG9yKCkgW3dpdGggVCA9IFQsIGxocyA9IGV4cHJlc3Npb25fcGFyYW1ldGVyLCByaHNfZ2l2ZW4gPSBleHByZXNzaW9uX3BhcmFtZXRlciwgZGVjbHR5cGUgKChsaHM6OiBvcGVyYXRvcigpKHYpICogZXhwcmVzc2lvbl9tdWx0aXBseTxsaHMsIHJoc19naXZlbj46OnJoczo6IG9wZXJhdG9yKCkodikpKSA9IGRlY2x0eXBlICgoZXhwcmVzc2lvbl9wYXJhbWV0ZXI6Om9wZXJhdG9yKCkodikgKiBleHByZXNzaW9uX3BhcmFtZXRlcjo6b3BlcmF0b3IoKSh2KSkpLCBleHByZXNzaW9uX211bHRpcGx5PGxocywgcmhzX2dpdmVuPjo6cmhzID0gaW5oZXJpdF9hZ2FpbjxleHByZXNzaW9uX3BhcmFtZXRlcj5dKHYpKSksIGV4cHJlc3Npb25fYWRkPGxocywgcmhzX2dpdmVuPjo6cmhzID0gaW5oZXJpdF9hZ2FpbjxleHByZXNzaW9uX211bHRpcGx5PGV4cHJlc3Npb25fcGFyYW1ldGVyLCBleHByZXNzaW9uX3BhcmFtZXRlcj4gPl0odikgKyBleHByZXNzaW9uX211bHRpcGx5OjpvcGVyYXRvcigpIFt3aXRoIFQgPSBULCBsaHMgPSBleHByZXNzaW9uX2NvbnN0YW50PGNoYXI+LCByaHNfZ2l2ZW4gPSBleHByZXNzaW9uX3BhcmFtZXRlciwgZGVjbHR5cGUgKChsaHM6OiBvcGVyYXRvcigpKHYpICogZXhwcmVzc2lvbl9tdWx0aXBseTxsaHMsIHJoc19naXZlbj46OnJoczo6IG9wZXJhdG9yKCkodikpKSA9IGRlY2x0eXBlICgoZXhwcmVzc2lvbl9jb25zdGFudDo6b3BlcmF0b3IoKSBbd2l0aCBUID0gVCwgViA9IGNoYXJdKHYpICogZXhwcmVzc2lvbl9wYXJhbWV0ZXI6Om9wZXJhdG9yKCkodikpKSwgZXhwcmVzc2lvbl9tdWx0aXBseTxsaHMsIHJoc19naXZlbj46OnJocyA9IGluaGVyaXRfYWdhaW48ZXhwcmVzc2lvbl9wYXJhbWV0ZXI+XSh2KSkpLCBleHByZXNzaW9uX2FkZDxsaHMsIHJoc19naXZlbj46OnJocyA9IGluaGVyaXRfYWdhaW48ZXhwcmVzc2lvbl9tdWx0aXBseTxleHByZXNzaW9uX2NvbnN0YW50PGNoYXI+LCBleHByZXNzaW9uX3BhcmFtZXRlcj4gPl0K